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.