ae91fde2bdbbb1b057c10afca6e331df83971c5f kent Sat Jan 8 21:03:32 2011 -0800 Adding trackDbPolishAfterLinkup routine that bundles together a number of other calls, and exposing it for use by data hub trackDb list makers. diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index bc2582e..24f21eb 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -3547,53 +3547,61 @@ return NULL; } #ifdef DEBUG static void dumpFlagStatus(struct trackDb *tdbList, char *tableName, char *label) /* Look for tdbList for track matching tableName. Print out info on it starting with label. */ { struct trackDb *tdb = rFindTrack(0, tdbList, tableName); if (tdb == NULL) printf("%s: nil<BR>\n", label); else printf("%s: treeNodeType %d, composite? %d, supertrack ? %d<BR>\n", label, tdb->treeNodeType, COMPOSITE_NODE(tdb->treeNodeType), SUPERTRACK_NODE(tdb->treeNodeType)); } #endif /* DEBUG */ +struct trackDb *trackDbPolishAfterLinkup(struct trackDb *tdbList, char *db) +/* Do various massaging that can only be done after parent/child + * relationships are established. */ +{ +tdbList = pruneEmpties(tdbList, db, hIsPrivateHost(), 0); +trackDbContainerMarkup(NULL, tdbList); +rInheritFields(tdbList); +slSort(&tdbList, trackDbCmp); +return tdbList; +} + struct trackDb *hTrackDb(char *db) /* Load tracks associated with current db. * Supertracks are loaded as a trackDb, but are not in the returned list, * but are accessible via the parent pointers of the member tracks. Also, * the supertrack trackDb subtrack fields are not set here (would be * incompatible with the returned list) * Returns list sorted by priority * NOTE: this result is cached, do not free it ! */ { // static char *existingDb = NULL; // static struct trackDb *tdbList = NULL; struct trackDb *tdbList = NULL; //if (differentStringNullOk(existingDb, db)) // { tdbList = loadTrackDb(db, NULL); tdbList = trackDbLinkUpGenerations(tdbList); + tdbList = trackDbPolishAfterLinkup(tdbList, db); // freeMem(existingDb); // existingDb = cloneString(db); - tdbList = pruneEmpties(tdbList, db, hIsPrivateHost(), 0); - trackDbContainerMarkup(NULL, tdbList); - rInheritFields(tdbList); - slSort(&tdbList, trackDbCmp); // } return tdbList; } static struct trackDb *loadAndLookupTrackDb(struct sqlConnection *conn, char *where) /* Load trackDb object(s). Nothing done for composite tracks here. */ { return loadTrackDb(sqlGetDatabase(conn), where); } static struct trackDb *loadTrackDbForTrack(struct sqlConnection *conn, char *track) /* Load trackDb object for a track. this is common code for two external * functions. Handle composite tracks and subtrack inheritance here.