From 3d48d173bc89b8868bf28f22d875ff0667a24021 Mon Sep 17 00:00:00 2001
From: deva <deva>
Date: Thu, 27 May 2010 09:40:55 +0000
Subject: New commit/discard methods

---
 client/netcom.cc | 54 +++++++++++++++++++++++++++++++++++-------------------
 client/netcom.h  | 17 +++++++++++------
 2 files changed, 46 insertions(+), 25 deletions(-)

diff --git a/client/netcom.cc b/client/netcom.cc
index 4deba49..918b8e7 100644
--- a/client/netcom.cc
+++ b/client/netcom.cc
@@ -46,11 +46,8 @@
 #endif
 #endif
 
-NetCom::NetCom(QString host, quint16 port, QString user, QString cpr)
+NetCom::NetCom(QString host, quint16 port)
 {
-  this->user = user;
-  this->cpr = cpr;
-
   //
   // Setup connection
   //
@@ -65,19 +62,10 @@ NetCom::NetCom(QString host, quint16 port, QString user, QString cpr)
   manager = new QNetworkAccessManager(this);
   connect(manager, SIGNAL(finished(QNetworkReply*)),
           this, SLOT(replyFinished(QNetworkReply*)));
-
-  QDomDocument doc;
-  makeTransfer(doc, false, true);
 }
 
 NetCom::~NetCom()
 {
-  //
-  // Send commit
-  //
-  QDomDocument doc;
-  makeTransfer(doc, true, true);
-
   //
   // Clean up
   //
@@ -89,7 +77,8 @@ void NetCom::replyFinished(QNetworkReply *reply)
   finished[reply] = true;
 }
 
-QDomDocument NetCom::makeTransfer(QDomDocument &doc, bool commit, bool lockgui)
+QDomDocument NetCom::makeTransfer(QDomDocument &doc,
+                                  bool commit, bool lockgui, bool discard)
 {
   printf("\nMaking transfer:\n%s", doc.toString().toStdString().c_str());
 
@@ -98,7 +87,13 @@ QDomDocument NetCom::makeTransfer(QDomDocument &doc, bool commit, bool lockgui)
 
   if(sessionid != "") request.setRawHeader("SessionID",
                                            sessionid.toStdString().c_str());
-  if(commit) request.setRawHeader("SessionCommit", "yes");
+  if(commit) {
+    request.setRawHeader("SessionCommit", "yes");
+  }
+
+  if(discard) {
+    request.setRawHeader("SessionDiscard", "yes");
+  }
 
   //  QNetworkReply *reply = manager->get(request);
   QNetworkReply *reply = manager->post(request, doc.toByteArray());
@@ -108,10 +103,13 @@ QDomDocument NetCom::makeTransfer(QDomDocument &doc, bool commit, bool lockgui)
   }
   finished.remove(reply);
 
+  QByteArray data = reply->readAll();
   QDomDocument res_doc;
-  res_doc.setContent(reply->readAll());
+  res_doc.setContent(data);
+
+  printf("\nRecieved reponse:\n%s", data.data());
 
-  printf("\nRecieved repons:\n%s", res_doc.toString().toStdString().c_str());
+  printf("\nRecieved reponse (Parsed):\n%s", res_doc.toByteArray().data());
 
   if(reply->hasRawHeader("SessionID")) {
     sessionid = reply->rawHeader("SessionID");
@@ -124,6 +122,24 @@ QDomDocument NetCom::makeTransfer(QDomDocument &doc, bool commit, bool lockgui)
   return res_doc;
 }
 
+QDomDocument NetCom::initConnection()
+{
+  QDomDocument doc;
+  return makeTransfer(doc, false, true);
+}
+
+QDomDocument NetCom::commit()
+{
+  QDomDocument doc;
+  return makeTransfer(doc, true, true);
+}
+
+QDomDocument NetCom::discard()
+{
+  QDomDocument doc;
+  return makeTransfer(doc, false, true, true);
+}
+
 QDomDocument NetCom::send(QString templ, QString macro, bool lockgui)
 {
   QDomDocument doc;
@@ -134,7 +150,7 @@ QDomDocument NetCom::send(QString templ, QString macro, bool lockgui)
 
   QDomElement pracro_elem = doc.createElement("pracro");
   pracro_elem.setAttribute("version", "1.0");
-  pracro_elem.setAttribute("cpr", cpr);
+  pracro_elem.setAttribute("cpr", patientid);
   pracro_elem.setAttribute("user", user);
   doc.appendChild(pracro_elem);
 
@@ -157,7 +173,7 @@ QDomDocument NetCom::send(QVector< Widget* > widgets, QString templ,
 
   QDomElement pracro_elem = doc.createElement("pracro");
   pracro_elem.setAttribute("version", "1.0");
-  pracro_elem.setAttribute("cpr", cpr);
+  pracro_elem.setAttribute("cpr", patientid);
   pracro_elem.setAttribute("user", user);
   doc.appendChild(pracro_elem);
 
diff --git a/client/netcom.h b/client/netcom.h
index d890cb0..88b604e 100644
--- a/client/netcom.h
+++ b/client/netcom.h
@@ -42,28 +42,33 @@ class Widget;
 class NetCom : public QObject {
 Q_OBJECT
 public:
-  NetCom(QString host, quint16 port, QString user, QString cpr);
+  NetCom(QString host, quint16 port);
   ~NetCom();
 
   QDomDocument send(QString templ, QString macro = "", bool lockgui = true);
   QDomDocument send(QVector< Widget* > widgets, QString templ, QString macro,
                     QString version);
+  QDomDocument initConnection();
+  QDomDocument commit();
+  QDomDocument discard();
+
+  QString sessionid;
+  QString user;
+  QString patientid;
 
 public slots:
   void replyFinished(QNetworkReply*);
 
 private:
-  QString user;
-  QString cpr;
-
   QNetworkAccessManager *manager;
   QNetworkRequest request;
 
-  QString sessionid;
+  //  QString sessionid;
 
   QMap<QNetworkReply *, bool> finished;
 
-  QDomDocument makeTransfer(QDomDocument &dom, bool commit, bool lockgui);
+  QDomDocument makeTransfer(QDomDocument &dom,
+                            bool commit, bool lockgui, bool discard = false);
 };
 
 #endif/*__PRACRO_NETCOM_H__*/
-- 
cgit v1.2.3