Commit 9bcba674 authored by Ivan Donchevskiy's avatar Ivan Donchevskiy

Changed export to XML in CycleStorage

parent b21a332f
......@@ -33,13 +33,12 @@
void testTable1(void)
{
char *chr=(char*)malloc(20);
char *val=(char*)malloc(40);
char *chr=new char[20];
char *val=new char[40];
TableStorage *t;
t = new TableStorage("table.test", 40, 1220, 0);
int i;
printf("testTable\nsize = %d\n",t->size);
for(i=0;i<t->size;i++)
for(i=0;i<20;i++)
{
chr[0]=i;
sprintf(val,"%d",i);
......@@ -83,18 +82,18 @@ void testTable2(void)
{
if(t->FindKeyValue(&i,val)!=0) printf("%s, ",val);
}
printf("\ncurrent block = %d\n",t->cur_block);
printf("\ncurrent block = %d\n",t->GetCurBlock());
for(i=1;i<11;i++)
{
sprintf(val,"%d",i);
t->AddRow((char*)&i,val);
}
printf("current block = %d, elements with values=keys added:\n",t->cur_block);
printf("current block = %d, elements with values=keys added:\n",t->GetCurBlock());
for(i=1;i<20;i++)
{
if(t->FindKeyValue(&i,val)!=0) printf("%s, ",val);
}
printf("\ncurrent block = %d, rewriting first 7 with values=keys+10\n",t->cur_block);
printf("\ncurrent block = %d, rewriting first 7 with values=keys+10\n",t->GetCurBlock());
for(i=1;i<8;i++)
{
sprintf(val,"%d",i+10);
......@@ -109,7 +108,7 @@ void testTable2(void)
{
if(t->FindKeyValue(&i,val)!=0) printf("%s, ",val);
}
printf("\ncurrent block = %d, rewriting 3-10 elements with values=keys+40\n",t->cur_block);
printf("\ncurrent block = %d, rewriting 3-10 elements with values=keys+40\n",t->GetCurBlock());
for(i=3;i<11;i++)
{
sprintf(val,"%d",i+40);
......@@ -119,7 +118,7 @@ void testTable2(void)
{
if(t->FindKeyValue(&i,val)!=0) printf("%s, ",val);
}
printf("\ncurrent block = %d\n",t->cur_block);
printf("\ncurrent block = %d\n",t->GetCurBlock());
strcpy(val,"new block");
i=9;
......@@ -128,14 +127,14 @@ void testTable2(void)
{
if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val);
}
printf("\ncurrent block = %d\n",t->cur_block);
printf("\ncurrent block = %d\n",t->GetCurBlock());
printf("after reopen:\n");
t->Open("big_file.test", 4, 40, 20000, 5,28,0);
for(i=1;i<20;i++)
{
if(t->FindKeyValue(&i,val)!=0) printf("%s, ",val);
}
printf("\ncurrent block = %d\n",t->cur_block);
printf("\ncurrent block = %d\n",t->GetCurBlock());
delete t;
}
......@@ -146,7 +145,6 @@ void testJournal1(void)
char *str = new char[30];
printf("journal test 1\n");
j = new CycleStorage("big_file.test",30,1000000,20000,true);
printf("size = %d\n",j->size);
for(i=1;i<33000;i++)
{
sprintf(str,"%d",i);
......@@ -166,7 +164,7 @@ void testJournal1(void)
{
if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val);
}
printf("\ncurrent block = %d\n\n",t->cur_block);
printf("\ncurrent block = %d\n\n",t->GetCurBlock());
printf("\nfirst 30 elements after deleting first 20:\n");
for(i=0;i<20;i++)
......@@ -211,8 +209,7 @@ void testJournal2(void)
char *str = (char*)malloc(30);
j = new CycleStorage("big_file.test",30,1000000,20000);
printf("journal test 2 - checking number of iterations to find head/tail\n");
printf("size = %d\n\n",j->size);
printf("iterations = %d\n",j->iter);
printf("iterations = %d\n",j->GetIter());
for(i=0;i<20;i++)
{
for(k=1000;k<3000;k++)
......@@ -221,7 +218,7 @@ void testJournal2(void)
j->AddRow(str);
}
j->Open("big_file.test",30,1000000,20000);
printf("iterations = %d\n",j->iter);
printf("iterations = %d\n",j->GetIter());
}
printf("\n");
delete j;
......
......@@ -65,10 +65,9 @@ struct CycleStorageElem
class TableStorage
{
FILE *file;
int seekpos, inf_size;
int size,seekpos, inf_size;
int head;
public:
int size;
TableStorage(const char* name, int inf_sz, int sz, int seek);
~TableStorage();
int AddRow(char* key, char* val);
......@@ -78,39 +77,37 @@ class TableStorage
class TableBlockStorage
{
int max;
TableBlockStorageElem** mem;
int k_size, lim,seekpos;
int size,block_size,block_number,full_size;
public:
FILE *file;
int cur_block,inf_size;
TableBlockStorage();
TableBlockStorage(const char* name, int key_sz, int inf_sz, int sz, int block_num, int block_lim, int seek, bool create=false);
~TableBlockStorage();
bool Open(const char* name, int inf_sz, int key_sz, int sz, int block_num, int block_lim, int seek);
bool Create(const char* name, int inf_sz, int key_sz, int sz, int block_num, int block_lim, int seek);
bool AddRow(void* key, void* val);
bool DelRow(void* key);
void* FindKeyValue(void* key, void* val);
int GetCurBlock(void);
protected:
FILE *file;
int inf_size;
private:
int max,cur_block;
TableBlockStorageElem** mem;
int k_size, lim,seekpos;
int size,block_size,block_number,full_size;
void filewrite(int seek, bool needflush=true);
bool CopyToNextBlock();
bool KeyCompare(int i, void* key);
void* KeyPointer(int num);
void* ValPointer(int num);
public:
bool Open(const char* name, int inf_sz, int key_sz, int sz, int block_num, int block_lim, int seek);
bool Create(const char* name, int inf_sz, int key_sz, int sz, int block_num, int block_lim, int seek);
bool AddRow(void* key, void* val);
bool DelRow(void* key);
void* FindKeyValue(void* key, void* val);
/*public:
FILE *file;
int cur_block,inf_size;*/
};
class CycleStorage
{
FILE *file;
int seekpos, inf_size;
int head,tail,full_size;
void filewrite(CycleStorageElem* jrn,int seek, bool needflush=true);
void* ValPointer(void* pnt);
public:
int size, iter;
CycleStorage();
CycleStorage(const char* name, int inf_sz, int sz, int seek,bool create=false);
~CycleStorage();
......@@ -121,6 +118,13 @@ class CycleStorage
bool DelAllRows(void);
void* ViewRow(int num, void* str);
bool ExportToXML(const char* name);
int GetIter(void);
private:
FILE *file;
int size,seekpos, inf_size,iter;
int head,tail,full_size;
void filewrite(CycleStorageElem* jrn,int seek, bool needflush=true);
void* ValPointer(void* pnt);
};
#endif
......@@ -370,8 +370,10 @@ bool CycleStorage::ExportToXML(const char* name)
if(file==NULL) return false;
CycleStorageElem *jrn = (CycleStorageElem*)new char[full_size];
UniXML* f = new UniXML();
f->newDoc("!");
xmlNode* xn;
f->newDoc("journal");
fseek(file,seekpos+j*full_size,0);
char* num = new char[10];
for(i=0;i<size;i++)
{
if(j==size)
......@@ -382,7 +384,10 @@ bool CycleStorage::ExportToXML(const char* name)
fread(jrn,full_size,1,file);
if((jrn->status==1)||(jrn->status==2)||(jrn->status==4))
{
f->createNext(f->cur,"!",(char*)ValPointer(jrn));
sprintf(num,"%d",i);
xn=f->createChild(f->cur,"item","");
f->setProp(xn,"key",num);
f->setProp(xn,"text",(char*)ValPointer(jrn));
}
j++;
}
......@@ -390,3 +395,8 @@ bool CycleStorage::ExportToXML(const char* name)
delete jrn;
return true;
}
int CycleStorage::GetIter()
{
return iter;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment