diff options
| -rw-r--r-- | server/src/Makefile.am | 2 | ||||
| -rw-r--r-- | server/src/database.cc | 52 | ||||
| -rw-r--r-- | server/src/uid.cc | 63 | ||||
| -rw-r--r-- | server/src/uid.h | 49 | 
4 files changed, 143 insertions, 23 deletions
| diff --git a/server/src/Makefile.am b/server/src/Makefile.am index 12b3a21..ac5ed0a 100644 --- a/server/src/Makefile.am +++ b/server/src/Makefile.am @@ -14,6 +14,7 @@ pracrod_SOURCES = \  	server.cc \  	tcpsocket.cc \  	tostring.cc \ +	uid.cc \  	xmlparser.cc  EXTRA_DIST = \ @@ -25,4 +26,5 @@ EXTRA_DIST = \  	server.h \  	tcpsocket.h \  	tostring.h \ +	uid.h \  	xmlparser.h diff --git a/server/src/database.cc b/server/src/database.cc index 4bf9c61..1d4915e 100644 --- a/server/src/database.cc +++ b/server/src/database.cc @@ -27,9 +27,8 @@  #include "database.h"  #include "tostring.h" +#include "uid.h"  #include <time.h> -#include <sys/types.h> -#include <unistd.h>  Database::Database(std::string hostname, std::string user, std::string password)    : c("host=" + hostname + @@ -37,18 +36,6 @@ Database::Database(std::string hostname, std::string user, std::string password)        " password=" + password +        " dbname=pracro")  { -  /* -	try { -		char port_string[32]; -		sprintf(port_string, "%d", port); -		std::string hoststring = "host=" + host + " port=" + port_string + -      " user=" + user + " password=" + password + " dbname=" + database; -		c = new pqxx::connection(hoststring); - -	}	catch(const std::exception &e) { -		//throw PostgreSQLException(e.what()); -	} -  */  }  Database::~Database() @@ -57,26 +44,24 @@ Database::~Database()  int Database::post(Transaction &transaction)  { -  time_t now = time(NULL); -  std::string transidbase = toString((unsigned int)now) + "-" -    + toString((unsigned int)getpid()) + "-"; // Here we put the commit index +  UID uid; +  std::string now = toString((unsigned int)time(NULL));  	try {  		pqxx::work W(c);      Commits::iterator i = transaction.commits.begin(); -    unsigned int idx = 0;      while(i != transaction.commits.end()) {        Commit &commit = *i; -      std::string transid = transidbase + toString(idx); +      //      std::string transid = transidbase + toString(idx);        // Insert transaction entry        std::string sql = "INSERT INTO transactions VALUES('" +           transaction.cpr + "', '" +  -        transid + "', '" +  +        uid.toString() + "', '" +           commit.macro + "', '" +           commit.version + "', '" +  -        toString((unsigned int)now) + "', '" +  +        now + "', '" +           commit.user + "')";        W.exec(sql); @@ -86,7 +71,7 @@ int Database::post(Transaction &transaction)          Field &field = *j;          sql = "INSERT INTO fields VALUES('" +  -          transid + "', '" +  +          uid.toString() + "', '" +             field.name + "', '" +             field.value + "')";          W.exec(sql); @@ -94,7 +79,7 @@ int Database::post(Transaction &transaction)          j++;        } -      idx++; +      uid++;        i++;      } @@ -105,6 +90,27 @@ int Database::post(Transaction &transaction)  	return 0;  } +/* +int Database::getTransaction(cpr, transid) +{ +  SELECT fields.name, fields.value +    FROM transactions, fields +    WHERE transactions.cpr='2003791613' +    AND transactions.transaction='1234567890' +    AND transactions.transaction=fields.transaction +} +*/ + +/* +int Database::getMakro(cpr, macro) +{ +  SELECT fields.name, fields.value +    FROM transactions, fields +    WHERE transactions.cpr='2003791613' +    AND transactions.macro='dims' +    AND transactions.transaction=fields.transaction +} +*/  // som root  // # createuser -P -h localhost -U postgres diff --git a/server/src/uid.cc b/server/src/uid.cc new file mode 100644 index 0000000..f9f98ae --- /dev/null +++ b/server/src/uid.cc @@ -0,0 +1,63 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            uid.cc + * + *  Mon Sep 17 14:43:02 CEST 2007 + *  Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup + *  deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk + ****************************************************************************/ + +/* + *  This file is part of Pracro. + * + *  Pracro is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  Pracro is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with Pracro; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include "uid.h" + +static time_t gettime() +{ +  return time(NULL); +} + +UID::UID() +{ +  this->time = gettime(); +  this->pid = getpid(); +  this->cnt = 0; +} + +void UID::operator++(int) +{ +  cnt++; +} + +/* +std::string UID::operator(std::string)() +{ +  //  time_t now = time(NULL); +  //  std::string transidbase = toString((unsigned int)now) + "-" +  //    + toString((unsigned int)getpid()) + "-"; // Here we put the commit index + +  return std::string("ding"); +} +*/ + +std::string UID::toString() +{ +  //  std::string uid; +  char buf[256]; +  sprintf(buf, "%08x%04x%02x", time, pid, cnt); +  return buf; +} diff --git a/server/src/uid.h b/server/src/uid.h new file mode 100644 index 0000000..846986b --- /dev/null +++ b/server/src/uid.h @@ -0,0 +1,49 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            uid.h + * + *  Mon Sep 17 14:43:02 CEST 2007 + *  Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup + *  deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk + ****************************************************************************/ + +/* + *  This file is part of Pracro. + * + *  Pracro is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  Pracro is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with Pracro; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#ifndef __PRACRO_UID_H__ +#define __PRACRO_UID_H__ + +#include <time.h> +#include <string> +#include <sys/types.h> +#include <unistd.h> + +class UID { +public: +  UID(); +  void operator++(int); +  //  std::string operator(std::string)(); + +  std::string toString(); + +private: +  time_t time; +  pid_t pid; +  unsigned int cnt; +}; + +#endif/*__PRACRO_UID_H__*/ | 
