src/hg/makeDb/mdbUpdate/mdbPrint.c 1.5

1.5 2010/04/27 22:40:12 tdreszer
Renamed mdb to metaDb
Index: src/hg/makeDb/mdbUpdate/mdbPrint.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/makeDb/mdbUpdate/mdbPrint.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -b -B -U 1000000 -r1.4 -r1.5
--- src/hg/makeDb/mdbUpdate/mdbPrint.c	23 Apr 2010 22:33:19 -0000	1.4
+++ src/hg/makeDb/mdbUpdate/mdbPrint.c	27 Apr 2010 22:40:12 -0000	1.5
@@ -1,205 +1,205 @@
 /* mdbPrint - Prints metadata objects and variables from the mdb metadata table. */
 #include "common.h"
 #include "linefile.h"
 #include "options.h"
 #include "mdb.h"
 
 static char const rcsid[] = "$Id$";
 
 #define OBJTYPE_DEFAULT "table"
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
-  "mdbPrint - Prints metadata objects and variables from the mdb metadata table.\n"
+  "mdbPrint - Prints metadata objects and variables from the '" MDB_DEFAULT_NAME "' metadata table.\n"
   "usage:\n"
   "   mdbPrint {db} [-table=] [-byVar] [-ra/-line/-countObjs/-countVars/-countVals]\n"
   "                 [-all]\n"
   "                 [-obj= [-var= [-val=]]]\n"
   "                 [-var= [-val=]]\n"
   "                 [-vars=\"var1=val1 var2=val2...]\n"
   "Options:\n"
   "    {db}     Database to query metadata from.  This argument is required.\n"
   "    -table   Table to query metadata from.  Default is the sandbox version of\n"
   "             '" MDB_DEFAULT_NAME "'.\n"
   "    -byVar   Print each var and val, then all objects that match,\n"
   "             as opposed to printing objects and all the var=val pairs that match.\n"
   "    -ra      Default. Print each obj with a set of indented var val pairs on separate\n"
   "             lines. With -byVar prints pseudo-RA style with multiple objects per stanza.\n"
   "    -line    Print each obj and all var=val pairs on a single line.\n"
   "    -countObjs   Just print count of objects returned in the query.\n"
   "    -countVars   Just print count of variables returned in the query.\n"
   "    -countVals   Just print count of values returned in the query.\n"
   "  Four alternate ways to select metadata:\n"
   "    -all       Will print entire table (this could be huge).\n"
   "    -obj={objName}  Request a single object.  Can be narrowed by var and val.\n"
   "    -var={varName}  Request a single variable.  Can be narrowed by val.\n"
   "    -vars={var=val...}  Request a combination of var=val pairs.\n\n"
   "                    Use of 'var!=val', 'var=v%%' and 'var=?' are supported.\n"
   "There are two basic views of the data: by objects and by variables.  The default view "
   "is by object.  Each object will print out in an RA style stanza (by default) or as "
   "a single line of output containing all var=val pairs. In 'byVar' view, each RA style "
   "stanza holds a var val pair and all objects belonging to that pair on separate lines.  "
   "Linear 'byVar' view puts the entire var=val pair on one line.  Alternatively, request "
   "only counting of objects, variables or values.\n"
   "HINT: Use '%%' in any obj, var or val as a wildcard for selection.\n\n"
   "Examples:\n"
   "  mdbPrint hg19 -vars=\"grant=Snyder cell=GM12878 antibody=CTCF\"\n"
   "           Return all objs that satify ALL of the constraints.\n"
   "  mdbPrint mm9 -vars=\"grant=Snyder cell=GM12878 antibody=?\" -byVar\n"
   "           Return each all vars for all objects with the constraint.\n"
   "  mdbPrint hg18 -obj=wgEncodeUncFAIREseqPeaksPanislets -line\n"
   "           Return a single formatted metadata line for one object.\n"
   "  mdbPrint hg18 -countObjs -var=cell -val=GM%%\n"
   "           Return the count of objects which have a declared cell begining with 'GM'.\n"
   );
 }
 
 static struct optionSpec optionSpecs[] = {
-    {"table",    OPTION_STRING}, // default "mdb"
+    {"table",    OPTION_STRING}, // default "metaDb"
     {"ra",       OPTION_BOOLEAN},// ra format
     {"line",     OPTION_BOOLEAN},// linear format
     {"countObjs",OPTION_BOOLEAN},// returns only count of objects
     {"countVars",OPTION_BOOLEAN},// returns only count of variables
     {"countVals",OPTION_BOOLEAN},// returns only count of values
     {"all",      OPTION_BOOLEAN},// query entire table
     {"byVar",    OPTION_BOOLEAN},// With -all prints from var perspective
     {"obj",      OPTION_STRING}, // objName or objId
     {"var",      OPTION_STRING}, // variable
     {"val",      OPTION_STRING}, // value
     {"vars",     OPTION_STRING},// var1=val1 var2=val2...
     {NULL,       0}
 };
 
 int main(int argc, char *argv[])
 // Process command line.
 {
 struct mdbObj   * mdbObjs   = NULL;
 struct mdbByVar * mdbByVars = NULL;
 int objsCnt=0, varsCnt=0,valsCnt=0;
 
 if(argc == 1)
     usage();
 
 optionInit(&argc, argv, optionSpecs);
 if(argc < 2)
     {
     verbose(1, "REQUIRED 'DB' argument not found:\n");
     usage();
     }
 
 char *db        = argv[1];
 char *table     = optionVal("table",NULL);
 boolean raStyle = TRUE;
 if(optionExists("line") && !optionExists("ra"))
     raStyle = FALSE;
 boolean cntObjs = optionExists("countObjs");
 boolean cntVars = optionExists("countVars");
 boolean cntVals = optionExists("countVals");
 boolean byVar   = optionExists("byVar");
 
 boolean all = optionExists("all");
 if(all)
     {
     if(optionExists("obj")
     || optionExists("var") || optionExists("val") || optionExists("vars"))
         usage();
     }
 else if(optionExists("obj"))
     {
     mdbObjs = mdbObjCreate(optionVal("obj",  NULL),optionVal("var", NULL), NULL,optionVal("val", NULL));
     }
 else if(optionExists("var"))
     {
     mdbByVars =  mdbByVarCreate(optionVal("var", NULL),NULL,optionVal("val", NULL));
     }
 else if(optionExists("vars"))
     {
     mdbByVars = mdbByVarsLineParse(optionVal("vars", NULL));
     }
 else
     usage();
 
 struct sqlConnection *conn = sqlConnect(db);
 
 // Find the table if necessary
 if(table == NULL)
     {
     table = mdbTableName(conn,TRUE); // Look for sandBox name first
     if(table == NULL)
         errAbort("TABLE NOT FOUND: '%s.%s'.\n",db,MDB_DEFAULT_NAME);
     verbose(1, "Using table named '%s.%s'.\n",db,table);
     }
 
 if(byVar)
     {
     if(!all && mdbByVars == NULL) // assertable
         usage();
 
     // Requested a single var
     struct mdbByVar * queryResults = mdbByVarsQuery(conn,table,mdbByVars);
     if(queryResults == NULL)
         verbose(1, "No metadata met your selection criteria\n");
     else
         {
         objsCnt=mdbByVarCount(queryResults,FALSE,FALSE);
         varsCnt=mdbByVarCount(queryResults,TRUE ,FALSE);
         valsCnt=mdbByVarCount(queryResults,FALSE,TRUE );
         if(!cntObjs && !cntVars && !cntVals)
             mdbByVarPrint(queryResults,raStyle);
         mdbByVarsFree(&queryResults);
         }
     }
 else
     {
     struct mdbObj * queryResults = NULL;
     if(mdbByVars != NULL)
         {
         // Requested a set of var=val pairs and looking for the unique list of objects that have all of them!
         queryResults = mdbObjsQueryByVars(conn,table,mdbByVars);
         }
     else
         {
         // Requested a single obj
         queryResults = mdbObjQuery(conn,table,mdbObjs);
         }
 
     if(queryResults == NULL)
         verbose(1, "No metadata met your selection criteria\n");
     else
         {
         objsCnt=mdbObjCount(queryResults,TRUE);
         varsCnt=mdbObjCount(queryResults,FALSE);
         valsCnt=varsCnt;
         if(!cntObjs && !cntVars && !cntVals)
             mdbObjPrint(queryResults,raStyle);
         mdbObjsFree(&queryResults);
         }
     }
 sqlDisconnect(&conn);
 
 if(cntObjs || cntVars || cntVals)
     {
     if(cntObjs)
         printf("%d object%s\n",objsCnt,(objsCnt==1?"":"s"));
     if(cntVars)
         printf("%d variable%s\n",varsCnt,(varsCnt==1?"":"s"));
     if(cntVals)
         printf("%d value%s\n",valsCnt,(valsCnt==1?"":"s"));
     }
 else if( varsCnt>0 || valsCnt>0 || objsCnt>0 )
     {
     if(byVar)
         verbose(1,"vars:%d  vals:%d  objects:%d\n",varsCnt,valsCnt,objsCnt);
     else
         verbose(1,"objects:%d  vars:%d\n",objsCnt,varsCnt);
     }
 
 if(mdbObjs)
     mdbObjsFree(&mdbObjs);
 if(mdbByVars)
     mdbByVarsFree(&mdbByVars);
 
 return 0;
 }