src/hg/hgGenome/import.c 1.21

1.21 2010/05/18 06:20:55 galt
fixing for Views, and for case of allTracks with null track
Index: src/hg/hgGenome/import.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgGenome/import.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -b -B -U 4 -r1.20 -r1.21
--- src/hg/hgGenome/import.c	14 May 2010 23:30:24 -0000	1.20
+++ src/hg/hgGenome/import.c	18 May 2010 06:20:55 -0000	1.21
@@ -326,13 +326,15 @@
             }
         }
     if (tdbIsComposite(track))
         {
-        struct trackDb *subTdb;
         struct slName *subList = NULL;
-        slSort(&(track->subtracks), trackDbCmp);
-        for (subTdb = track->subtracks; subTdb != NULL; subTdb = subTdb->next)
+        struct slRef *tdbRefList = trackDbListGetRefsToDescendantLeaves(track->subtracks);
+        slSort(&tdbRefList, trackDbRefCmp);
+        struct slRef *tdbRef;
+        for (tdbRef = tdbRefList; tdbRef != NULL; tdbRef = tdbRef->next)
             {
+            struct trackDb *subTdb = tdbRef->val;
             name = slNameNew(subTdb->table);
             slAddTail(&subList, name);
             hashAdd(uniqHash, subTdb->table, NULL);
             }
@@ -376,19 +375,15 @@
             name = slNameNew(s);
             slAddHead(&nameList, name);
             }
         }
-
     slNameSort(&nameList);
     }
-
 name = slNameNew(trackTable);
-if (!tdbIsComposite(track) && !trackDbLocalSetting(track, "container"))
+if (!tdbIsComposite(track))
     /* suppress for composite tracks -- only the subtracks have tables */
     slAddHead(&nameList, name);
-
 addTablesAccordingToTrackType(&nameList, uniqHash, track);
-
 hashFree(&uniqHash);
 return nameList;
 }
 
@@ -827,9 +821,11 @@
     	struct hTableInfo *hti = hFindTableInfo(database, NULL, name->name);
 	if (!hti)
 	    continue;  /* filter out tables that don't exist anymore */
 	if (!htiIsPositional(hti) &&
-	    !startsWith("bam", track->type) && !startsWith("big", track->type))
+	    (!track ||
+		(!startsWith("bam", track->type) && !startsWith("big", track->type)))
+	    )
 	    continue;  /* filter out non-positional, do not add it to new list */
 	}
     slAddHead(&newList,name);
     }