Projekt

Allgemein

Profil

Herunterladen (35,2 KB) Statistiken
| Zweig: | Markierung: | Revision:

#undef BUILDING_AQDATABASE


#include <aqdatabase/aqdb.h>
#include <aqdatabase/aqdb_db.h>
#include <aqdatabase/aqdb_value.h>

#include <gwenhywfar/gwenhywfar.h>
#include <gwenhywfar/cgui.h>
#include <gwenhywfar/debug.h>

#include <unistd.h>



int setup_database_with_table(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;

fprintf(stderr, "test_db_open started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

#if 0
rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
#endif

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
AQDB_COLUMN_LIST *cl;
AQDB_COLUMN *c;

cl=AQDB_Column_List_new();

/* member "id" */
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
AQDB_Column_List_Add(c, cl);

/* member "flags" */
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
AQDB_Column_List_Add(c, cl);

/* member "nameSpace" */
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
AQDB_Column_List_Add(c, cl);

/* member "code" */
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
AQDB_Column_List_Add(c, cl);

/* member "name" */
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
AQDB_Column_List_Add(c, cl);

/* member "symbol" */
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
AQDB_Column_List_Add(c, cl);

/* member "description" */
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
AQDB_Column_List_Add(c, cl);

/* member "smallestUnit" */
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
AQDB_Column_List_Add(c, cl);

rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_Column_List_free(cl);
AQDB_DB_free(db);
return 2;
}
AQDB_Column_List_free(cl);
}

rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

fprintf(stderr, "Ok.\n");
AQDB_DB_free(db);
return 0;
}



int create_objects(AQDB_DB *db, AQDB_ID tableId, int numberOfObjects) {
int rv;
int n;

for (n=0; n<numberOfObjects; n++) {
AQDB_OBJECT *o;
char numbuf[256];

/* create object (8 fields) */
o=AQDB_Object_new(tableId, 0, 8);
if (o==NULL) {
fprintf(stderr, "No object created.\n");
AQDB_DB_free(db);
return 2;
}

AQDB_Object_SetFieldInt64(o, 0, n+1); /* id */
AQDB_Object_SetFieldInt64(o, 1, numberOfObjects+n+1);

snprintf(numbuf, sizeof(numbuf)-1, "NAMESPACE-%d", n+1);
numbuf[sizeof(numbuf)-1]=0;
AQDB_Object_SetFieldString(o, 2, numbuf);

snprintf(numbuf, sizeof(numbuf)-1, "CODE-%d", n+1);
numbuf[sizeof(numbuf)-1]=0;
AQDB_Object_SetFieldString(o, 3, numbuf);

snprintf(numbuf, sizeof(numbuf)-1, "NAME-%d", n+1);
numbuf[sizeof(numbuf)-1]=0;
AQDB_Object_SetFieldString(o, 4, numbuf);

snprintf(numbuf, sizeof(numbuf)-1, "SYM-%d", n+1);
numbuf[sizeof(numbuf)-1]=0;
AQDB_Object_SetFieldString(o, 5, numbuf);

snprintf(numbuf, sizeof(numbuf)-1, "DESCRIPTION-%d", n+1);
numbuf[sizeof(numbuf)-1]=0;
AQDB_Object_SetFieldString(o, 6, numbuf);

snprintf(numbuf, sizeof(numbuf)-1, "SMU-%d", n+1);
numbuf[sizeof(numbuf)-1]=0;
AQDB_Object_SetFieldString(o, 7, numbuf);

rv=AQDB_DB_AddObject(db, tableId, o);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to add object (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
AQDB_Object_free(o);
}

return 0;
}








int test_db_factory(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;

fprintf(stderr, "test_db_factory started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}
AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_create(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;

fprintf(stderr, "test_db_create started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_open(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;

fprintf(stderr, "test_db_open started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

#if 0
rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
#endif

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_close(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;

fprintf(stderr, "test_db_close started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

#if 0
rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
#endif

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_create_table(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;

fprintf(stderr, "test_db_create_table started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ|AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

#if 0
rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
#endif

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


if (1) {
AQDB_COLUMN_LIST *cl;
AQDB_COLUMN *c;

cl=AQDB_Column_List_new();

/* member "id" */
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
AQDB_Column_List_Add(c, cl);

/* member "flags" */
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
AQDB_Column_List_Add(c, cl);

/* member "nameSpace" */
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
AQDB_Column_List_Add(c, cl);

/* member "code" */
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
AQDB_Column_List_Add(c, cl);

/* member "name" */
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
AQDB_Column_List_Add(c, cl);

/* member "symbol" */
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
AQDB_Column_List_Add(c, cl);

/* member "description" */
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
AQDB_Column_List_Add(c, cl);

/* member "smallestUnit" */
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
AQDB_Column_List_Add(c, cl);

rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_Column_List_free(cl);
AQDB_DB_free(db);
return 2;
}
AQDB_Column_List_free(cl);
}

rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}



AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_create_table_and_open_db(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;

fprintf(stderr, "test_db_create_table_and_open_db started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

#if 0
rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
#endif

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
AQDB_COLUMN_LIST *cl;
AQDB_COLUMN *c;

cl=AQDB_Column_List_new();

/* member "id" */
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
AQDB_Column_List_Add(c, cl);

/* member "flags" */
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
AQDB_Column_List_Add(c, cl);

/* member "nameSpace" */
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
AQDB_Column_List_Add(c, cl);

/* member "code" */
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
AQDB_Column_List_Add(c, cl);

/* member "name" */
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
AQDB_Column_List_Add(c, cl);

/* member "symbol" */
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
AQDB_Column_List_Add(c, cl);

/* member "description" */
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
AQDB_Column_List_Add(c, cl);

/* member "smallestUnit" */
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
AQDB_Column_List_Add(c, cl);

rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_Column_List_free(cl);
AQDB_DB_free(db);
return 2;
}
AQDB_Column_List_free(cl);
}

rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}



AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_create_and_open_table(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;
AQDB_ID tableId;

fprintf(stderr, "test_db_create_and_open_table started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

#if 0
rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
#endif

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
AQDB_COLUMN_LIST *cl;
AQDB_COLUMN *c;

cl=AQDB_Column_List_new();

/* member "id" */
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
AQDB_Column_List_Add(c, cl);

/* member "flags" */
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
AQDB_Column_List_Add(c, cl);

/* member "nameSpace" */
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
AQDB_Column_List_Add(c, cl);

/* member "code" */
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
AQDB_Column_List_Add(c, cl);

/* member "name" */
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
AQDB_Column_List_Add(c, cl);

/* member "symbol" */
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
AQDB_Column_List_Add(c, cl);

/* member "description" */
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
AQDB_Column_List_Add(c, cl);

/* member "smallestUnit" */
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
AQDB_Column_List_Add(c, cl);

rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_Column_List_free(cl);
AQDB_DB_free(db);
return 2;
}
AQDB_Column_List_free(cl);
}

rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

tableId=0;
rv=AQDB_DB_OpenTable(db, "commodity",
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
&tableId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}



AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_create_object(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;
AQDB_ID tableId;

fprintf(stderr, "test_db_create_object started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

#if 0
rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
#endif

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
AQDB_COLUMN_LIST *cl;
AQDB_COLUMN *c;

cl=AQDB_Column_List_new();

/* member "id" */
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
AQDB_Column_List_Add(c, cl);

/* member "flags" */
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
AQDB_Column_List_Add(c, cl);

/* member "nameSpace" */
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
AQDB_Column_List_Add(c, cl);

/* member "code" */
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
AQDB_Column_List_Add(c, cl);

/* member "name" */
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
AQDB_Column_List_Add(c, cl);

/* member "symbol" */
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
AQDB_Column_List_Add(c, cl);

/* member "description" */
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
AQDB_Column_List_Add(c, cl);

/* member "smallestUnit" */
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
AQDB_Column_List_Add(c, cl);

rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_Column_List_free(cl);
AQDB_DB_free(db);
return 2;
}
AQDB_Column_List_free(cl);
}

rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

tableId=0;
rv=AQDB_DB_OpenTable(db, "commodity",
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
&tableId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
AQDB_COLUMN_LIST *cl;
AQDB_OBJECT *o;

rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

cl=AQDB_DB_GetColumnList(db, tableId);
if (cl==NULL) {
fprintf(stderr, "No column list.\n");
AQDB_DB_free(db);
return 2;
}
o=AQDB_Object_new(tableId, 0, AQDB_Column_List_GetCount(cl));
if (o==NULL) {
fprintf(stderr, "No object created.\n");
AQDB_DB_free(db);
return 2;
}

AQDB_Object_SetFieldInt64(o, 0, 0x11111111);
AQDB_Object_SetFieldInt64(o, 1, 0xaaaaaaaa);
AQDB_Object_SetFieldString(o, 2, "NAMESPACE1");
AQDB_Object_SetFieldString(o, 3, "CODE1");
AQDB_Object_SetFieldString(o, 4, "NAME1");
AQDB_Object_SetFieldString(o, 5, "SYM1");
AQDB_Object_SetFieldString(o, 6, "DESCRIPTION1");
AQDB_Object_SetFieldString(o, 7, "1111");


rv=AQDB_DB_AddObject(db, tableId, o);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to add object (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


}



rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}



AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_query(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;
AQDB_ID tableId;

fprintf(stderr, "test_db_create_object started\n");
rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

#if 0
rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
#endif

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
AQDB_COLUMN_LIST *cl;
AQDB_COLUMN *c;

cl=AQDB_Column_List_new();

/* member "id" */
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
AQDB_Column_List_Add(c, cl);

/* member "flags" */
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
AQDB_Column_List_Add(c, cl);

/* member "nameSpace" */
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
AQDB_Column_List_Add(c, cl);

/* member "code" */
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
AQDB_Column_List_Add(c, cl);

/* member "name" */
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
AQDB_Column_List_Add(c, cl);

/* member "symbol" */
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
AQDB_Column_List_Add(c, cl);

/* member "description" */
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
AQDB_Column_List_Add(c, cl);

/* member "smallestUnit" */
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
AQDB_Column_List_Add(c, cl);

rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
AQDB_Column_List_free(cl);
AQDB_DB_free(db);
return 2;
}
AQDB_Column_List_free(cl);
}

rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

tableId=0;
rv=AQDB_DB_OpenTable(db, "commodity",
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
&tableId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
AQDB_COLUMN_LIST *cl;
AQDB_OBJECT *o;

rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

cl=AQDB_DB_GetColumnList(db, tableId);
if (cl==NULL) {
fprintf(stderr, "No column list.\n");
AQDB_DB_free(db);
return 2;
}
o=AQDB_Object_new(tableId, 0, AQDB_Column_List_GetCount(cl));
if (o==NULL) {
fprintf(stderr, "No object created.\n");
AQDB_DB_free(db);
return 2;
}

AQDB_Object_SetFieldInt64(o, 0, 0x11111111); /* id */
AQDB_Object_SetFieldInt64(o, 1, 0xaaaaaaaa);
AQDB_Object_SetFieldString(o, 2, "NAMESPACE1");
AQDB_Object_SetFieldString(o, 3, "CODE1");
AQDB_Object_SetFieldString(o, 4, "NAME1");
AQDB_Object_SetFieldString(o, 5, "SYM1");
AQDB_Object_SetFieldString(o, 6, "DESCRIPTION1");
AQDB_Object_SetFieldString(o, 7, "1111");


rv=AQDB_DB_AddObject(db, tableId, o);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to add object (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}


}


if (1) {
AQDB_ID queryId;
AQDB_ID resultList[64];
int idListLen;
int i;

rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x11111111\"", 0, &queryId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to submit a query (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

idListLen=64;
rv=AQDB_DB_QueryGetFirst(db, queryId, resultList, &idListLen);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to get first query results (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

fprintf(stderr, "Number of objects: %i\n", idListLen);
for (i=0; i<idListLen; i++) {
fprintf(stderr, " - %03d: %d\n", i, resultList[i]);
}

rv=AQDB_DB_QueryClose(db, queryId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close the query results (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
}


rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}



AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_query_multi_objects(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;
AQDB_ID tableId;

fprintf(stderr, "test_db_create_object started\n");
rv=setup_database_with_table(url, dirname, fname);
if (rv) {
fprintf(stderr, "ERROR: Unable to setup db (%d)\n", rv);
return 2;
}

rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

tableId=0;
rv=AQDB_DB_OpenTable(db, "commodity",
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
&tableId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

/* create objects */
rv=create_objects(db, tableId, 1024);
if (rv) {
fprintf(stderr, "Error creating objects.\n");
AQDB_DB_free(db);
return 2;
}

/* done editing */
rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
}


if (1) {
AQDB_ID queryId;
AQDB_ID resultList[64];
int idListLen;
int i;
int pos;

//rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x11111111\"", 0, &queryId);
//rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x22222222\"", 0, &queryId);
rv=AQDB_DB_QuerySubmit(db, tableId, 0, NULL, 0, &queryId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to submit a query (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

idListLen=64;
rv=AQDB_DB_QueryGetFirst(db, queryId, resultList, &idListLen);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to get first query results (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

for (pos=0;;) {
fprintf(stderr, "Number of objects: %i\n", idListLen);
for (i=0; i<idListLen; i++) {
fprintf(stderr, " - %5d (%2d): %d\n", pos++, i, resultList[i]);
}

idListLen=64;
rv=AQDB_DB_QueryGetNext(db, queryId, resultList, &idListLen);
if (rv<0) {
if (rv!=GWEN_ERROR_NOT_FOUND) {
fprintf(stderr, "ERROR: Unable to get next query results (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
else
break;
}
};

rv=AQDB_DB_QueryClose(db, queryId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close the query results (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
}


rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}



AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}



int test_db_rollback(const char *url, const char *dirname, const char *fname) {
AQDB_DB *db=NULL;
int rv;
AQDB_ID tableId;

fprintf(stderr, "test_db_rollback\n");
rv=setup_database_with_table(url, dirname, fname);
if (rv) {
fprintf(stderr, "ERROR: Unable to setup db (%d)\n", rv);
return 2;
}

rv=AQDB_DbFactory(url, &db);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
return 2;
}

rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

tableId=0;
rv=AQDB_DB_OpenTable(db, "commodity",
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
&tableId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

if (1) {
rv=AQDB_DB_BeginEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

/* create objects */
rv=create_objects(db, tableId, 1024);
if (rv) {
fprintf(stderr, "Error creating objects.\n");
AQDB_DB_free(db);
return 2;
}

/* done editing */
rv=AQDB_DB_EndEdit(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
}


if (1) {
AQDB_ID queryId;
AQDB_ID resultList[64];
int idListLen;
int i;
int pos;

//rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x11111111\"", 0, &queryId);
//rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x22222222\"", 0, &queryId);
rv=AQDB_DB_QuerySubmit(db, tableId, 0, NULL, 0, &queryId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to submit a query (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

idListLen=64;
rv=AQDB_DB_QueryGetFirst(db, queryId, resultList, &idListLen);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to get first query results (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

for (pos=0;;) {
fprintf(stderr, "Number of objects: %i\n", idListLen);
for (i=0; i<idListLen; i++) {
fprintf(stderr, " - %5d (%2d): %d\n", pos++, i, resultList[i]);
}

idListLen=64;
rv=AQDB_DB_QueryGetNext(db, queryId, resultList, &idListLen);
if (rv<0) {
if (rv!=GWEN_ERROR_NOT_FOUND) {
fprintf(stderr, "ERROR: Unable to get next query results (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
else
break;
}
};

rv=AQDB_DB_QueryClose(db, queryId);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close the query results (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}
}


if (1) {
AQDB_SESSION_DESCR_LIST *sl;
AQDB_SESSION_DESCR *sd;

sl=AQDB_SessionDescr_List_new();
rv=AQDB_DB_GetRollbackSessions(db, sl);
if (rv<0) {
fprintf(stderr, "ERROR: Error getting rollback sessions (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}

sd=AQDB_SessionDescr_List_First(sl);
while(sd) {
fprintf(stderr, "- session %d (%s, %d additions, %d deletions, %d modifications)\n",
(int) AQDB_SessionDescr_GetSessionId(sd),
AQDB_SessionDescr_GetUserName(sd),
(int) AQDB_SessionDescr_GetAdditions(sd),
(int) AQDB_SessionDescr_GetDeletions(sd),
(int) AQDB_SessionDescr_GetModifications(sd));
sd=AQDB_SessionDescr_List_Next(sd);
}
}


rv=AQDB_DB_Close(db, 0);
if (rv<0) {
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
AQDB_DB_free(db);
return 2;
}



AQDB_DB_free(db);

fprintf(stderr, "Ok.\n");
return 0;
}






int test_database_module(const char *url, const char *dirname, const char *fname) {
int rv;

#if 0
rv=test_db_factory(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_factory()\n");
return 2;
}
if (fname)
unlink(fname);

rv=test_db_create(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_create()\n");
return 2;
}
if (fname)
unlink(fname);

rv=test_db_open(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_open()\n");
return 2;
}
if (fname)
unlink(fname);
#endif

rv=test_db_close(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_close()\n");
return 2;
}
if (fname)
unlink(fname);

rv=test_db_create_table(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_create_table()\n");
return 2;
}
if (fname)
unlink(fname);

rv=test_db_create_table_and_open_db(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_create_table_and_open_db()\n");
return 2;
}
if (fname)
unlink(fname);

rv=test_db_create_and_open_table(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_create_and_open_table()\n");
return 2;
}
if (fname)
unlink(fname);

rv=test_db_create_object(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_create_object()\n");
return 2;
}
if (fname)
unlink(fname);


rv=test_db_query(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_query()\n");
return 2;
}
if (fname)
unlink(fname);


rv=test_db_query_multi_objects(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_query_multi_objects()\n");
return 2;
}
if (fname)
unlink(fname);


rv=test_db_rollback(url, dirname, fname);
if (rv) {
fprintf(stderr, "FAILED: test_db_rollback()\n");
return 2;
}
//if (fname)
// unlink(fname);


return 0;
}



int main(int argc, char **argv) {
int rv;
GWEN_GUI *gui;

rv=GWEN_Init();
if (rv) {
DBG_ERROR_ERR(0, rv);
return rv;
}

rv=AQDB_Init();
if (rv) {
DBG_ERROR_ERR(0, rv);
return rv;
}

gui=GWEN_Gui_CGui_new();
GWEN_Gui_SetCharSet(gui, "ISO-8859-15");
GWEN_Gui_SetGui(gui);
GWEN_Logger_SetLevel(AQDB_LOGDOMAIN, GWEN_LoggerLevel_Info);


unlink("/tmp/aqdatabase-db1.db");
rv=test_database_module("file:///tmp/aqdatabase-db1.db", NULL, "/tmp/aqdatabase-db1.db");
if (rv) {
fprintf(stderr, "FAILED: test_db_factory()\n");
return 2;
}


rv=AQDB_Fini();
if (rv) {
DBG_ERROR_ERR(0, rv);
return 2;
}

rv=GWEN_Fini();
if (rv) {
DBG_ERROR_ERR(0, rv);
return 2;
}


return 0;
}



(3-3/5)