src/hg/inc/metaTbl.h 1.7

1.7 2010/03/31 23:34:43 tdreszer
Tightening screws. Don't allow shared metaTbl update except from protected file.
Index: src/hg/inc/metaTbl.h
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/inc/metaTbl.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -B -U 4 -r1.6 -r1.7
--- src/hg/inc/metaTbl.h	30 Mar 2010 23:35:24 -0000	1.6
+++ src/hg/inc/metaTbl.h	31 Mar 2010 23:34:43 -0000	1.7
@@ -86,8 +86,10 @@
 /* Print out metaTbl as a comma separated list including final comma. */
 
 /* -------------------------------- End autoSql Generated Code -------------------------------- */
 
+#include "trackDb.h"
+
 #define METATBL_DEFAULT_NAME "metaTbl"
 
 // The metaTbl holds metadata primarily for tables.
 //   Many types of objects could be supported, though currently files are the only other type.
@@ -130,9 +132,9 @@
 // The standard container of a single object's metadata.
 // Also: when searching metadata obj->var->val this is the top struct.
     {
     struct metaObj* next;     // Next in singly linked list of objects
-    char *objName;            // Object name or ID
+    char *obj;                // Object name or ID
     enum metaObjType objType; // table | file
     boolean deleteThis;       // Used when loading formatted file which may contain delete requests
     struct metaVar* vars;     // if NOT NULL: list of variables belonging to this object
     struct hash* varHash;     // if NOT NULL: variables are also hashed! (var str to metaVar struct)
@@ -141,9 +143,9 @@
 struct metaLeafObj
 // When searching var->val->obj this is the bottom-level obj struct.
     {
     struct metaLeafObj* next; // Next in singly linked list of variables
-    char *objName;            // Object name or ID
+    char *obj;                // Object name or ID
     enum metaObjType objType; // table | file
     };
 
 struct metaLimbVal
@@ -177,30 +179,47 @@
 
 char *metaVarTypeEnumToString(enum metaVarType varType);
 // Convert metadata varType enum string
 
-
-// ------ Loading files and parsing lines ------
+// ------ Parsing lines ------
 struct metaObj *metadataLineParse(char *line);
 /* Parses a single formatted metadata line into metaObj for updates or queries. */
 
-struct metaObj *metaObjCreate(char *obj,char *type,char *var, char *varType,char *val);
-/* Creates a singular metaObj query object based on obj and all other optional params. */
-
 struct metaByVar *metaByVarsLineParse(char *line);
 /* Parses a line of "var1=val1 var2=val2 into a metaByVar object for queries. */
 
+
+// ------ Loading from args, hashes and tdb ------
+struct metaObj *metaObjCreate(char *obj,char *type,char *var, char *varType,char *val);
+/* Creates a singular metaObj query object based on obj and all other optional params. */
+
 struct metaByVar*metaByVarCreate(char *var, char *varType,char *val);
 /* Creates a singular var=val pair struct for metadata queries. */
 
-struct metaObj *metaObjsLoadFromFormattedFile(char *fileName);
+struct metaObj *metaObjsLoadFromHashes(struct hash *objsHash);
 // Load all metaObjs from a file containing metadata formatted lines
 
-struct metaObj *metaObjsLoadFromHashes(struct hash *objsHash);
+struct metaObj *metadataForTable(char *db,struct trackDb *tdb,char *table);
+// Returns the metadata for a table.  Either tdb or table must be provided
+
+
+// ------ Loading from files ------
+struct metaObj *metaObjsLoadFromFormattedFile(char *fileName,boolean *validated);
 // Load all metaObjs from a file containing metadata formatted lines
+// If requested, will determine if a magic number at the end of the file matches contents
 
-struct metaObj *metaObjsLoadFromRAFile(char *fileName);
+struct metaObj *metaObjsLoadFromRAFile(char *fileName,boolean *validated);
 // Load all metaObjs from a file containing RA formatted 'metaObjects'
+// If requested, will determine if a magic number at the end of the file matches contents
+
+
+
+// ------ Table name and creation ------
+void metaTblReCreate(struct sqlConnection *conn,char *tblName,boolean testOnly);
+// Creates ore Recreates the named metaTbl.
+
+char*metaTblName(struct sqlConnection *conn,boolean mySandBox);
+// returns the metaTbl name or NULL if conn supplied but the table doesn't exist
 
 
 // -------------- Updating the DB --------------
 int metaObjsSetToDb(struct sqlConnection *conn,char *tableName,struct metaObj *metaObjs,boolean replace,boolean testOnly);
@@ -212,9 +231,9 @@
 // Query the metadata table by obj and optional vars and vals in metaObj struct.  If metaObj is NULL query all.
 // Returns new metaObj struct fully populated and sorted in obj,var order.
 #define metaObjsQueryAll(conn,table) metaObjQuery((conn),(table),NULL)
 
-struct metaObj *metaObjQueryByObj(struct sqlConnection *conn,char *table,char *objName,char *varName);
+struct metaObj *metaObjQueryByObj(struct sqlConnection *conn,char *table,char *obj,char *var);
 // Query a single metadata object and optional var from a table (default metaTbl).
 
 struct metaByVar *metaByVarsQuery(struct sqlConnection *conn,char *table,struct metaByVar *metaByVars);
 // Query the metadata table by one or more var=val pairs to find the distinct set of objs that satisfy ANY conditions.
@@ -243,8 +262,11 @@
 // returns the count of objs belonging to this set of vars;
 
 
 // ----------------- Utilities -----------------
+char *metadataFindValue(struct metaObj *metaObj, char *var);
+// Finds the val associated with the var or retruns NULL
+
 boolean metaObjContains(struct metaObj *metaObj, char *var, char *val);
 // Returns TRUE if object contains var, val or both
 
 boolean metaByVarContains(struct metaByVar *metaByVar, char *val, char *obj);
@@ -258,8 +280,11 @@
 
 void metaObjTransformToUpdate(struct metaObj *metaObjs, char *var, char *varType,char *val,boolean deleteThis);
 /* Turns one or more metaObjs into the stucture needed to add/update or delete. */
 
+int metaObjCRC(struct metaObj *metaObjs);
+// returns a summ of all individual CRC values of all metObj strings
+
 
 // --------------- Free at last ----------------
 void metaObjsFree(struct metaObj **metaObjsPtr);
 // Frees one or more metadata objects and any contained metaVars.  Will free any hashes as well.