f3aca36a01fb59700deb21186e015310f6676776 larrym Mon Oct 31 15:06:24 2011 -0700 skip tables which have "tableBrowser off" in trackDb (e.g. decipher; see redmine #5803) diff --git src/hg/das/das.c src/hg/das/das.c index add7b03..7b5d3df 100644 --- src/hg/das/das.c +++ src/hg/das/das.c @@ -202,47 +202,61 @@ boolean ok = TRUE; word = nextWord(&line); if (word != NULL) { if (sameString("chain", word)) ok = FALSE; else if (sameString("net", word)) ok = FALSE; else if (sameString("netAlign", word)) ok = FALSE; } freeMem(dupe); return ok; } +static boolean disabledViaSettings(char *settings) +// Return TRUE if this table is disabled via "tableBrowser off" in trackDb settings string. +// We modify settings string (pass in a copy if you don't want it modified). +{ +char *line; +boolean disabled = FALSE; +struct lineFile *lf = lineFileOnString("settings", TRUE, settings); + +while (!disabled && lineFileNext(lf, &line, NULL)) + disabled = startsWith("tableBrowser off", line); +lineFileClose(&lf); +return disabled; +} + static struct hash *mkTrackTypeHash() /* build a hash of track name to type */ { struct sqlConnection *conn = hAllocConn(database); struct hash *hash = hashNew(10); struct slName *trackDb, *trackDbs = hTrackDbList(); for (trackDb = trackDbs; trackDb != NULL; trackDb = trackDb->next) { if (sqlTableExists(conn, trackDb->name)) { char query[128]; - safef(query, sizeof(query), "select tableName,type from %s", trackDb->name); + safef(query, sizeof(query), "select tableName,type,settings from %s", trackDb->name); struct sqlResult *sr = sqlGetResult(conn, query); char **row; while ((row = sqlNextRow(sr)) != NULL) { - if (dasableType(row[1]) && (hashLookup(hash, row[0]) == NULL)) + if (dasableType(row[1]) && !disabledViaSettings(row[2]) && (hashLookup(hash, row[0]) == NULL)) hashAdd(hash, row[0], NULL); } sqlFreeResult(&sr); } } slFreeList(&trackDbs); hFreeConn(&conn); return hash; } static boolean dasableTrack(char *name) /* Return TRUE if track can be put into DAS format. */ { static struct hash *types = NULL; if (types == NULL)