src/hg/makeDb/hgTrackDb/hgTrackDb.c 1.67

1.67 2010/05/11 01:43:30 kent
Refactoring to split the trackDb.tableName field into separate track and table fields. Similarly track.mapName field goes to the same track and table fields.
Index: src/hg/makeDb/hgTrackDb/hgTrackDb.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/makeDb/hgTrackDb/hgTrackDb.c,v
retrieving revision 1.66
retrieving revision 1.67
diff -b -B -U 4 -r1.66 -r1.67
--- src/hg/makeDb/hgTrackDb/hgTrackDb.c	7 May 2010 05:05:05 -0000	1.66
+++ src/hg/makeDb/hgTrackDb/hgTrackDb.c	11 May 2010 01:43:30 -0000	1.67
@@ -97,23 +97,23 @@
 struct trackDb *newList = NULL, *tdb, *next;
 for (tdb = tdbList; tdb != NULL; tdb = next)
     {
     next = tdb->next;
-    verbose(3,"pruneStrict checking table: '%s'\n", tdb->tableName);
+    verbose(3,"pruneStrict checking track: '%s'\n", tdb->track);
     if (tdb->subtracks != NULL)
 	{
 	tdb->subtracks = pruneStrict(tdb->subtracks, db);
 	}
     if (tdb->subtracks != NULL)
         {
 	slAddHead(&newList, tdb);
 	}
-    else if (hTableOrSplitExists(db, tdb->tableName))
+    else if (hTableOrSplitExists(db, tdb->table))
         {
 	slAddHead(&newList, tdb);
 	}
     else
-	verbose(3,"pruneStrict removing table: '%s'\n", tdb->tableName);
+	verbose(3,"pruneStrict removing track: '%s' no table %s\n", tdb->track, tdb->table);
     }
 slReverse(&newList);
 return newList;
 }
@@ -132,9 +132,9 @@
 	if (tdb->subtracks != NULL)
 	    slAddHead(&newList, tdb);
 	else
 	    verbose(3,"pruneEmptyContainers: empty track: '%s'\n",
-		tdb->tableName);
+		tdb->track);
 	}
     else 
         {
 	slAddHead(&newList, tdb);
@@ -192,19 +192,19 @@
     if (trackRelBits & releaseBit)
 	{
 	/* we want to include this track, check to see if we already have it */
 	struct hashEl *hel;
-	if ((hel = hashLookup(haveHash, tdb->tableName)) != NULL)
+	if ((hel = hashLookup(haveHash, tdb->track)) != NULL)
 	    errAbort("found two copies of table %s: one with release %s, the other %s\n", 
-		tdb->tableName, (char *)hel->val, release);
+		tdb->track, (char *)hel->val, release);
 
-	hashAdd(haveHash, tdb->tableName, rel);
+	hashAdd(haveHash, tdb->track, rel);
 	hashRemove(tdb->settingsHash, "release");
 	slAddHead(&relList, tdb);
 	}
     else
 	verbose(3,"pruneRelease: removing '%s', release: '%s' != '%s'\n",
-	    tdb->tableName, rel, release);
+	    tdb->track, rel, release);
     }
 
 freeHash(&haveHash);
 return relList;
@@ -233,11 +233,11 @@
 	    slAddHead(&nonOrphanList, tdb);
 	    }
 	else
 	    {
-	    verbose(3,"pruneOrhans: removing '%s'\n",
-		tdb->tableName);
-	    hashRemove(trackHash, tdb->tableName);
+	    verbose(3,"pruneOrphans: removing '%s'\n",
+		tdb->track);
+	    hashRemove(trackHash, tdb->track);
 	    done = FALSE;
 	    }
 	freeMem(parentName);
 	}
@@ -249,9 +249,9 @@
 static void applyOverride(struct hash *trackHash,
                           struct trackDb *overTd)
 /* Apply a trackDb override to a track, if it exists */
 {
-struct trackDb *tdb = hashFindVal(trackHash, overTd->tableName);
+struct trackDb *tdb = hashFindVal(trackHash, overTd->track);
 if (tdb != NULL)
     trackDbOverride(tdb, overTd);
 }
 
@@ -270,9 +270,9 @@
     {
     if (tdb->overrides != NULL)
 	applyOverride(trackHash, tdb);
     else
-	hashStore(trackHash, tdb->tableName)->val = tdb;
+	hashStore(trackHash, tdb->track)->val = tdb;
     }
 }
 
 void updateBigTextField(struct sqlConnection *conn, char *table,
@@ -348,9 +348,9 @@
     if (isEmpty(td->html))
         {
         char *htmlName = trackDbSetting(td, "html");
         if (htmlName == NULL)
-            htmlName = td->tableName;
+            htmlName = td->track;
 	safef(fileName, sizeof(fileName), "%s/%s.html", dirName, htmlName);
 	if (fileExists(fileName))
             {
 	    readInGulp(fileName, &td->html, NULL);
@@ -408,9 +408,9 @@
         char subGroupName[256];
         AllocVar(sgd);
 	sgd->compositeTdb = td;
 
-	verbose(3,"getting subgroups for %s\n", td->tableName);
+	verbose(3,"getting subgroups for %s\n", td->track);
 	for(i=1; ; i++)
 	    {
 	    safef(subGroupName, sizeof(subGroupName), "subGroup%d", i);
 	    char *sgSetting = trackDbSetting(td, subGroupName);
@@ -430,9 +430,9 @@
 		sgd->nameHash = newHash(3);
 	    verbose(3,"   adding group %s\n", sgName);
 	    hashAdd(sgd->nameHash, sgName, subGroupHash);
 	    }
-	hashAdd(compositeHash, td->tableName, sgd);
+	hashAdd(compositeHash, td->track, sgd);
 	}
     }
 return compositeHash;
 }
@@ -441,18 +441,18 @@
     struct trackDb *td, struct subGroupData *sgd)
 {
 char *subGroups = trackDbSetting(td, "subGroups");
 
-verbose(2, "   checkOne %s %s\n", compositeName, td->tableName);
+verbose(2, "   checkOne %s %s\n", compositeName, td->track);
 if (subGroups && (sgd->nameHash == NULL))
     {
     errAbort("subTrack %s has groups not defined in parent %s\n",
-	     td->tableName, compositeName);
+	     td->track, compositeName);
     }
 else if (!subGroups && (sgd->nameHash != NULL))
     {
     errAbort("subtrack %s is missing subGroups defined in parent %s\n",  
-	td->tableName, compositeName);
+	td->track, compositeName);
     }
 
 if (!subGroups && (sgd->nameHash == NULL))
     return; /* nothing to do */
@@ -465,17 +465,17 @@
     {
     struct hashEl *hel = hashLookup( sgd->nameHash, slPair->name);
     if (hel == NULL)
 	errAbort("subtrack %s has subGroup (%s) not found in parent\n", 
-	    td->tableName, slPair->name);
+	    td->track, slPair->name);
 
     struct hash *subHash = hel->val;
     hashStore(foundHash, slPair->name);
 
     if (hashLookup(subHash, slPair->val) == NULL)
 	{
 	errAbort("subtrack %s has subGroup (%s) with value (%s) not found in parent\n", 
-	    td->tableName, slPair->name, (char *)slPair->val);
+	    td->track, slPair->name, (char *)slPair->val);
 	}
     }
 
 struct hashCookie cookie = hashFirst(sgd->nameHash);
@@ -483,9 +483,9 @@
 while ((hel = hashNext(&cookie)) != NULL)
     {
     if (hashLookup(foundHash, hel->name) == NULL)
 	errAbort("subtrack %s is missing required subGroup %s\n", 
-	    td->tableName, hel->name);
+	    td->track, hel->name);
     }
 
 }
 
@@ -501,20 +501,20 @@
 	{
 	struct slRef *childList = trackDbListGetRefsToDescendantLeaves(
 	    tdb->subtracks);
 
-	verbose(2,"verifying %s child %p\n",tdb->tableName, childList);
+	verbose(2,"verifying %s child %p\n",tdb->track, childList);
 	for (child = childList; child != NULL; child = child->next)
 	    {
 	    struct trackDb *childTdb = child->val;
-	    verbose(2, "  checking child %s\n",childTdb->tableName);
+	    verbose(2, "  checking child %s\n",childTdb->track);
 
 	    /* Look for some ancestor in composite hash and set sgd to it. */
-	    struct subGroupData *sgd =  hashFindVal(compositeHash, tdb->tableName);
+	    struct subGroupData *sgd =  hashFindVal(compositeHash, tdb->track);
 	    verbose(2, "looking for %s in compositeHash got %p\n", 
-		tdb->tableName, sgd);
+		tdb->track, sgd);
 	    assert(sgd != NULL);	
-	    checkOneSubGroups(tdb->tableName, childTdb, sgd);
+	    checkOneSubGroups(tdb->track, childTdb, sgd);
 	    }
 	}
     }
 }
@@ -566,9 +566,9 @@
 	if(item != NULL)
 	    slAddHead(&itemsToSort, item);
 	else
 	    {
-	    verbose(1,"Error: '%s' missing shortLabels or sortOrder setting is inconsistent.\n",tdbContainer->tableName);
+	    verbose(1,"Error: '%s' missing shortLabels or sortOrder setting is inconsistent.\n",tdbContainer->track);
 	    needsSorting = FALSE;
 	    sortableTdbItemCreate(tdbItem,sortOrder);
 	    break;
 	    }
@@ -576,9 +576,9 @@
 
     // Does this container need to be sorted?
     if(needsSorting && slCount(itemsToSort))
         {
-        verbose(2,"Sorting '%s' with %d items\n",tdbContainer->tableName,slCount(itemsToSort));
+        verbose(2,"Sorting '%s' with %d items\n",tdbContainer->track,slCount(itemsToSort));
         sortTdbItemsAndUpdatePriorities(&itemsToSort);
         countOfSortedContainers++;
         }
 
@@ -674,8 +674,9 @@
 layerOnRa(strict, database, asmDir, trackHash, FALSE);
 
 /* Represent hash as list */
 struct trackDb *tdbList = trackDbListFromHash(trackHash);
+trackDbAddTableField(tdbList);
 
 /* Get rid of orphans with no parent of the correct release. */
 tdbList = pruneOrphans(tdbList, trackHash);
 
@@ -721,11 +722,11 @@
     if (parent != NULL && parent->subtracks == NULL) /* Our supertrack clue. */
 	{
 	/* The supertrack may appear as a 'floating' parent for multiple tracks.
 	 * Only put it on the list once. */
-	if (!hashLookup(superTrackHash, parent->tableName))
+	if (!hashLookup(superTrackHash, parent->track))
 	    {
-	    hashAdd(superTrackHash, parent->tableName, parent);
+	    hashAdd(superTrackHash, parent->track, parent);
 	    slAddHead(&tdbList, parent);
 	    }
 	}
     slAddHead(&tdbList, tdb);
@@ -787,25 +788,25 @@
 	{
         if (isEmpty(td->html))
 	    {
 	    if (strict && !trackDbLocalSetting(td, "parent") && !trackDbLocalSetting(td, "superTrack") &&
-	    	!sameString(td->tableName,"cytoBandIdeo"))
+	    	!sameString(td->track,"cytoBandIdeo"))
 		{
-		fprintf(stderr, "Warning: html missing for %s %s %s '%s'\n",org, database, td->tableName, td->shortLabel);
+		fprintf(stderr, "Warning: html missing for %s %s %s '%s'\n",org, database, td->track, td->shortLabel);
 		}
 	    }
 	else
 	    {
-	    updateBigTextField(conn,  trackDbName, "tableName", td->tableName, "html", td->html);
+	    updateBigTextField(conn,  trackDbName, "tableName", td->table, "html", td->html);
 	    }
 	if (td->settingsHash != NULL)
 	    {
 	    char *settings = settingsFromHash(td->settingsHash);
-	    updateBigTextField(conn, trackDbName, "tableName", td->tableName,
+	    updateBigTextField(conn, trackDbName, "tableName", td->track,
 	    	"settings", settings);
 	    if (showSettings)
 		{
-		verbose(1, "%s: type='%s';", td->tableName, td->type);
+		verbose(1, "%s: type='%s';", td->track, td->type);
 		if (isNotEmpty(settings))
 		    {
 		    char *oneLine = replaceChars(settings, "\n", "; ");
 		    eraseTrailingSpaces(oneLine);