/* Example how to work with two CifFileObj objects,
   one is opened for reading, another for writing
*/
#include "CifFileObj.h"
#include <iostream.h>

void FillTestTable(ISTable *s);
void TwoCifFileObj();

#define FALSE 0

int main() {

  TwoCifFileObj();

  exit(0);
}


void TwoCifFileObj()
{
  CifFileObj * fobjR = NULL;
  CifFileObj * fobjW = NULL;
  int i=0;
  char tname[50];

  fobjR = new CifFileObj("./test/TESTFILE3", READ_MODE, 80, "?", 0);
  fobjW = new CifFileObj("./test/DBtest.odb",WRITE_MODE, 80, "?", 0);
  ISTable *sst1= fobjR->GetTable("DEPOSIT-0","citation");

  if (sst1==NULL) cout<<"Table does not exist"<<endl;
  fobjW->WriteTable(sst1,"061","chem_comp");

  ISTable *sst2=new ISTable();
  sst2->AddColumn("start_v");
  sst2->AddColumn("end_v");
  sst2->AddColumn("lp_lenght");
  fobjW->WriteTable(sst2,"061","prazna");

  for (i=0;i<20;i++){
    ISTable *sst=new ISTable();
    FillTestTable(sst);
    sprintf(tname,"%d",i);
    fobjW->WriteTable(sst,"061",tname);
  }

  fobjW->Write("./test/test3.ocif",0, 0);

  fobjW->CloseFile(1);
  if (fobjW) delete fobjW;

  fobjR->CloseFile(0);
  if (fobjR) delete fobjR;

}

void FillTestTable(ISTable *s) {
 int i;
 ReVarCifArray<CifString>* ColStart;
 ReVarCifArray<CifString>* ColEnd;
 ReVarCifArray<CifString>* ColLen;
 ColStart = new ReVarCifArray<CifString>;
 ColEnd = new ReVarCifArray<CifString>;
 ColLen = new ReVarCifArray<CifString>;
 CifString length;
 char a[5];
 s->AddColumn("start_v");
 s->AddColumn("end_v");
 s->AddColumn("lp_lenght");
 for (i=1; i<50; i++) {
   sprintf(a,"%d",i);
   length.Copy(a);
	ColStart->Add(length);
	ColEnd->Add(length);
	ColLen->Add(length);
 }

 s->FillColumn(*ColStart,0);
 s->FillColumn(*ColEnd,1);
 s->FillColumn(*ColLen,2);

 delete ColStart;
 delete ColEnd;
 delete ColLen;
}

