9b13731e6e466aa0f781179da2d504db2f4c15a9
tdreszer
  Wed Mar 30 11:28:34 2011 -0700
Made slPairListFromString and slPairListToString optionally handle double quotes. Finally made mdbObjReorderByCv so that priority in cv.ra typeOfTerms is used.
diff --git src/hg/inc/mdb.h src/hg/inc/mdb.h
index b8a274f..69666a5 100644
--- src/hg/inc/mdb.h
+++ src/hg/inc/mdb.h
@@ -99,30 +99,31 @@
 #define MDB_VAL                 "val"
 
 // OBJECT TYPES
 #define MDB_OBJ_TYPE            "objType"
 #define MDB_OBJ_TYPE_TABLE      "table"
 #define MDB_OBJ_TYPE_FILE       "file"
 #define MDB_OBJ_TYPE_COMPOSITE  "composite"
 
 // WELL KNOWN MDB VARS
 #define MDB_VAR_PI              CV_TERM_GRANT
 #define MDB_VAR_LAB             CV_TERM_LAB
 #define MDB_VAR_COMPOSITE       MDB_OBJ_TYPE_COMPOSITE
 #define MDB_VAR_ANTIBODY        CV_TERM_ANTIBODY
 #define MDB_VAR_CELL            CV_TERM_CELL
 #define MDB_VAR_DATATYPE        CV_TERM_DATA_TYPE
+#define MDB_VAR_CONTROL         CV_TERM_CONTROL
 #define MDB_VAR_TABLENAME       "tableName"
 #define MDB_VAR_FILENAME        "fileName"
 #define MDB_VAR_FILEINDEX       "fileIndex"
 #define MDB_VAR_DCC_ACCESSION   "dccAccession"
 #define MDB_VAR_PROJECT         "project"
 
 // ENCODE Specific (at least for now)
 #define MDB_VAL_ENCODE_PROJECT  "wgEncode"
 #define MDB_VAR_ENCODE_SUBID    "subId"
 #define MDB_VAR_ENCODE_EDVS     "expVars"
 #define MDB_VAR_ENCODE_EXP_ID   "expId"
 #define MDB_VAL_ENCODE_EDV_NONE "None"
 
 
 // The mdb holds metadata primarily for tables.
@@ -312,38 +313,45 @@
 
 boolean mdbObjsContainAltleastOneMatchingVar(struct mdbObj *mdbObjs, char *var, char *val);
 // Returns TRUE if any object in set contains var
 #define mdbObjsContainAtleastOne(mdbObjs, var) mdbObjsContainAltleastOneMatchingVar((mdbObjs),(var),NULL)
 
 struct mdbObj *mdbObjsCommonVars(struct mdbObj *mdbObjs);
 // Returns a new mdbObj with all vars that are contained in every obj passed in.
 // Note that the returnd mdbObj has a meaningles obj name and vals.
 
 boolean mdbByVarContains(struct mdbByVar *mdbByVar, char *val, char *obj);
 // Returns TRUE if var contains val, obj or both
 
 void mdbObjReorderVars(struct mdbObj *mdbObjs, char *vars,boolean back);
 // Reorders vars list based upon list of vars "cell antibody treatment".  Send to front or back.
 
+void mdbObjReorderByCv(struct mdbObj *mdbObjs, boolean includeHidden);
+// Reorders vars list based upon cv.ra typeOfTerms priority
+
 void mdbObjsSortOnVars(struct mdbObj **mdbObjs, char *vars);
 // Sorts on var,val pairs vars lists: fwd case-sensitive.  Assumes all objs' vars are in identical order.
 // Optionally give list of vars "cell antibody treatment" to sort on (bringing to front of vars lists).
 
 void mdbObjsSortOnVarPairs(struct mdbObj **mdbObjs,struct slPair *varValPairs);
 // Sorts on var,val pairs vars lists: fwd case-sensitive.  Assumes all objs' vars are in identical order.
 // This method will use mdbObjsSortOnVars()
 
+void mdbObjsSortOnCv(struct mdbObj **mdbObjs, boolean includeHidden);
+// Puts obj->vars in order based upon cv.ra typeOfTerms priority,
+//  then case-sensitively sorts all objs in list based upon that var order.
+
 void mdbObjRemoveVars(struct mdbObj *mdbObjs, char *vars);
 // Prunes list of vars for an object, freeing the memory.  Doesn't touch DB.
 
 void mdbObjRemoveHiddenVars(struct mdbObj *mdbObjs);
 // Prunes list of vars for mdb objs that have been declared as hidden in cv.ra typeOfTerms
 
 char *mdbRemoveCommonVar(struct mdbObj *mdbList, char *var);
 // Removes var from set of mdbObjs but only if all that hav it have a commmon val
 // Returns the val if removed, else NULL
 
 boolean mdbObjSetVar(struct mdbObj *mdbObj, char *var,char *val);
 // Sets the string value to a single var in an obj, preparing for DB update.
 // returns TRUE if updated, FALSE if added
 
 boolean mdbObjSetVarInt(struct mdbObj *mdbObj, char *var,int val);