NMD
nmdmysql.c
Go to the documentation of this file.
00001 #include <stdlib.h>
00002 #include <stdio.h>
00003 #include <string.h>
00004 #include "nmd_impl.h"
00005 #include "nmd.h"
00006 
00007 /*! Generate an mysql dump of an object
00008  */
00009 #undef __FUNCT__
00010 #define __FUNCT__ "NMDObjectDumpToMySQL"
00011 NMDErrorCode NMDObjectDumpToMySQL(NMD_metadata obj)
00012 {
00013   NMD_string namesstring,valuesstring;
00014   int icat,icmp; NMDErrorCode ierr;
00015   CHECKHASNMDCOOKIE(obj);
00016 
00017   ierr = NMDStringCreate("",&namesstring); NMD_ERR_RETURN(ierr);
00018   ierr = NMDStringCreate("",&valuesstring); NMD_ERR_RETURN(ierr);
00019 
00020   for (icat=0; icat<obj->ncat; icat++) {
00021     NMD_metadata_category cat = obj->cats[icat];
00022     NMD_string catstring;
00023     CHECKHASNMDCOOKIE(cat);
00024     ierr = NMDStringCreate(cat->name,&catstring); NMD_ERR_RETURN(ierr);
00025     for (icmp=0; icmp<cat->ncmp; icmp++) {
00026       char cmpvalue[45];
00027       NMD_metadata_item cmp = cat->cmps[icmp];
00028       CHECKHASNMDCOOKIE(cmp);
00029       memset(cmpvalue,0,45);
00030       switch (cmp->t) {
00031       case NMDInt : sprintf(cmpvalue,"%d",cmp->i); break;
00032       case NMDReal : sprintf(cmpvalue,"%e",cmp->r); break;
00033       default :
00034         continue;
00035       }
00036       if (cmpvalue[0]) {
00037         NMD_string cmpstring,cmpcatstring;
00038         /* name */
00039         ierr = NMDStringCreate(cmp->name,&cmpstring); NMD_ERR_RETURN(ierr);
00040         ierr = NMDStringConcat
00041           (0,catstring,':',cmpstring,0,&cmpcatstring); NMD_ERR_RETURN(ierr);
00042         ierr = NMDStringAppend
00043           (0,&namesstring,0,cmpcatstring,','); NMD_ERR_RETURN(ierr);
00044         ierr = NMDStringDestroy(cmpstring); NMD_ERR_RETURN(ierr);
00045         ierr = NMDStringDestroy(cmpcatstring); NMD_ERR_RETURN(ierr);
00046         /* value */
00047         ierr = NMDStringCreate(cmpvalue,&cmpcatstring); NMD_ERR_RETURN(ierr);
00048         ierr = NMDStringAppend
00049           (0,&valuesstring,0,cmpcatstring,','); NMD_ERR_RETURN(ierr);
00050         ierr = NMDStringDestroy(cmpcatstring); NMD_ERR_RETURN(ierr);
00051       }
00052     }
00053     ierr = NMDStringDestroy(catstring); NMD_ERR_RETURN(ierr);
00054   }
00055 
00056   {
00057     const char *c;
00058     ierr = NMDStringGetString(namesstring,&c); NMD_ERR_RETURN(ierr);
00059     printf("INSERT INTO yourtable (%s)\n",c);
00060     ierr = NMDStringGetString(valuesstring,&c); NMD_ERR_RETURN(ierr);
00061     printf("VALUES (%s);\n",c);
00062   }
00063 
00064   return 0;
00065 }
00066 
00067