src/hg/hgTables/wiggle.c 1.72

1.72 2009/04/10 20:04:30 tdreszer
Fix many instances of using composite tdb when subtrack tdb is needed
Index: src/hg/hgTables/wiggle.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTables/wiggle.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -b -B -U 4 -r1.71 -r1.72
--- src/hg/hgTables/wiggle.c	17 Mar 2009 04:28:39 -0000	1.71
+++ src/hg/hgTables/wiggle.c	10 Apr 2009 20:04:30 -0000	1.72
@@ -467,38 +467,8 @@
 dataVectorFree(&dv);
 return resultCount;
 }
 
-
-static struct trackDb *trackDbWithWiggleSettings(char *table)
-/* Get trackDb for a table in the database -- or if it has a parent/composite 
- * track, then return that because it contains the wiggle settings. */
-{
-if (curTrack != NULL)
-    {
-    if (sameString(table, curTrack->tableName))
-	return curTrack;
-    else if (curTrack->subtracks)
-	{
-	struct trackDb *sTdb = NULL;
-	for (sTdb = curTrack->subtracks;  sTdb != NULL;  sTdb = sTdb->next)
-	    {
-	    if (sameString(table, sTdb->tableName))
-		return curTrack;
-	    }
-	}
-    }
-/* OK, table is not curTrack nor any of its subtracks -- look it up (and its 
- * parent if there is one): */
-    {
-    struct trackDb *tdb = hTrackDbForTrack(database, table);
-    struct trackDb *cTdb = hCompositeTrackDbForSubtrack(database, tdb);
-    if (cTdb != NULL)
-	return cTdb;
-    return tdb;
-    }
-}
-
 static int wigOutRegion(char *table, struct sqlConnection *conn,
 	struct region *region, int maxOut, enum wigOutputType wigOutType,
 	struct wigAsciiData **data, int spanConstraint)
 /* Write out wig data in region.  Write up to maxOut elements. 
@@ -550,9 +520,9 @@
 	    wds->setSpanConstraint(wds,spanConstraint);
 	else
 	    {
 	    struct sqlConnection *trashConn = hAllocConn(CUSTOM_TRASH);
-	    struct trackDb *tdb = trackDbWithWiggleSettings(table);
+	    struct trackDb *tdb = findTdbForTable(database, curTrack, table);
 	    unsigned span = minSpan(trashConn, splitTableOrFileName,
 		region->chrom, region->start, region->end, cart, tdb);
 	    wds->setSpanConstraint(wds, span);
 	    hFreeConn(&trashConn);
@@ -573,9 +543,9 @@
 	{
 	/* XXX TBD, watch for a span limit coming in as an SQL filter */
 	if (intersectBedList)
 	    {
-	    struct trackDb *tdb = trackDbWithWiggleSettings(table);
+	    struct trackDb *tdb = findTdbForTable(database, curTrack, table);
 	    unsigned span;	
 	    span = minSpan(conn, splitTableOrFileName, region->chrom,
 		region->start, region->end, cart, tdb);
 	    wds->setSpanConstraint(wds, span);
@@ -870,9 +840,9 @@
     if (ct->dbTrack)
 	{
 	unsigned span = 0;
 	struct sqlConnection *trashConn = hAllocConn(CUSTOM_TRASH);
-	struct trackDb *tdb = trackDbWithWiggleSettings(table);
+	struct trackDb *tdb = findTdbForTable(database, curTrack, table);
 	valuesMatched = getWigglePossibleIntersection(wds, region,
 	    CUSTOM_TRASH, table2, &intersectBedList,
 		splitTableOrFileName, operations);
 	span = minSpan(trashConn, splitTableOrFileName, region->chrom,
@@ -892,9 +862,9 @@
 	errAbort( "getWiggleAsBed: NULL conn given for database table");
 
     if (hFindSplitTable(database, region->chrom, table, splitTableOrFileName, &hasBin))
 	{
-	struct trackDb *tdb = trackDbWithWiggleSettings(table);
+	struct trackDb *tdb = findTdbForTable(database, curTrack, table);
 	unsigned span = 0;
 
 	/* XXX TBD, watch for a span limit coming in as an SQL filter */
 	span = minSpan(conn, splitTableOrFileName, region->chrom,
@@ -1053,9 +1023,9 @@
 	{
 	if (ct->dbTrack)
 	    {
 	    struct sqlConnection *trashConn = hAllocConn(CUSTOM_TRASH);
-	    struct trackDb *tdb = trackDbWithWiggleSettings(table);
+	    struct trackDb *tdb = findTdbForTable(database, curTrack, table);
 	    span = minSpan(trashConn, splitTableOrFileName, region->chrom,
 		region->start, region->end, cart, tdb);
 	    wds->setSpanConstraint(wds, span);
 	    valuesMatched = getWigglePossibleIntersection(wds, region,