NMD
|
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