src/hg/lib/trackDbCustom.c 1.76

1.76 2010/02/04 22:58:17 kent
Adding trackDbUpdateOldTag function to convert older format trackDb tags to current format. Specifically converting superTrack, compositeTrack, and subTrack tags to use the new container and parent tags instead.
Index: src/hg/lib/trackDbCustom.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/trackDbCustom.c,v
retrieving revision 1.75
retrieving revision 1.76
diff -b -B -U 4 -r1.75 -r1.76
--- src/hg/lib/trackDbCustom.c	27 Jan 2010 07:41:21 -0000	1.75
+++ src/hg/lib/trackDbCustom.c	4 Feb 2010 22:58:17 -0000	1.76
@@ -718,9 +718,9 @@
                      || atoi(setting) != 0));
 }
 
 struct trackDb *subTdbFind(struct trackDb *parent,char *table)
-/* Return subTrack tdb if it exists in parent. */
+/* Return child tdb if it exists in parent. */
 {
 if(parent == NULL)
     return NULL;
 
@@ -901,9 +901,9 @@
 /* Do subtrack hierarchy - filling in parent and subtracks fields. */
 for (tdb = superlessList; tdb != NULL; tdb = next)
     {
     next = tdb->next;
-    char *subtrackSetting = trackDbLocalSetting(tdb, "subTrack");
+    char *subtrackSetting = trackDbLocalSetting(tdb, "parent");
     if (subtrackSetting != NULL)
         {
 	char *parentName = cloneFirstWord(subtrackSetting);
 	struct trackDb *parent = hashFindVal(trackHash, parentName);
@@ -913,9 +913,9 @@
 	    tdb->parent = parent;
 	    }
 	else
 	    {
-	    errAbort("Parent track %s of subTrack %s doesn't exist", parentName, tdb->tableName);
+	    errAbort("Parent track %s of child %s doesn't exist", parentName, tdb->tableName);
 	    }
 	freez(&parentName);
 	}
     else
@@ -1038,4 +1038,41 @@
 else
     return tdb;
 }
 
+boolean trackDbUpdateOldTag(char **pTag, char **pVal)
+/* Look for obscolete tags and update them to new format.  Return TRUE if any update
+ * is done.  Will allocate fresh memory for new tag and val if updated. */
+{
+char *tag = *pTag;
+char *val = *pVal;
+boolean updated = FALSE;
+
+if (sameString(tag, "compositeTrack"))
+    {
+    tag = "container";
+    val = "composite";
+    }
+else if (sameString(tag, "subTrack"))
+    {
+    tag = "parent";
+    }
+else if (sameString(tag, "superTrack"))
+    {
+    if (sameWord(val, "on"))
+        {
+	tag = "container";
+	val = "folder";
+	}
+    else
+        {
+	tag = "parent";
+	}
+    }
+if (updated)
+    {
+    *pTag = cloneString(tag);
+    *pVal = cloneString(val);
+    }
+return updated;
+}
+