483716a7cd43a3c24c9b3273206f37021fe3f2d7
kent
  Tue Jan 11 17:58:48 2011 -0800
Adding hub support to hgc.
diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index a4a4f96..70044a2 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -2724,50 +2724,31 @@
     tdb = trackDbForPseudoTrack(CUTTERS_TRACK_NAME, CUTTERS_TRACK_LABEL, CUTTERS_TRACK_LONGLABEL, tvHide, TRUE);
 else if (isCustomTrack(track))
     {
     ctList = customTracksParseCart(database, cart, NULL, NULL);
     for (ct = ctList; ct != NULL; ct = ct->next)
         {
         if (sameString(track, ct->tdb->track))
             {
             tdb = ct->tdb;
             break;
             }
         }
     }
 else if (isHubTrack(track))
     {
-    int hubId = hubIdFromTrackName(track);
-    struct sqlConnection *conn = hConnectCentral();
-    struct hubConnectStatus *hubStatus = hubConnectStatusForId(conn, hubId);
-    hDisconnectCentral(&conn);
-    if (hubStatus == NULL)
-        errAbort("The hubId %d was not found", hubId);
-    if (!isEmpty(hubStatus->errorMessage))
-        errAbort("Hub %s at %s has the error: %s", hubStatus->shortLabel, 
-		hubStatus->hubUrl, hubStatus->errorMessage);
-    char hubName[16];
-    safef(hubName, sizeof(hubName), "%d", hubId);
-    struct trackHub *hub = trackHubOpen(hubStatus->hubUrl, hubName);
-    struct trackHubGenome *hubGenome = trackHubFindGenome(hub, database);
-    struct trackDb *tdbList = trackHubTracksForGenome(hub, hubGenome);
-    tdbList = trackDbLinkUpGenerations(tdbList);
-    tdbList = trackDbPolishAfterLinkup(tdbList, database);
-    rAddTrackListToHash(trackHash, tdbList, chromosome, FALSE);
-    tdb = hashFindVal(trackHash, track);
-    if (tdb == NULL)
-	errAbort("Can't find track %s in %s", track, hubStatus->hubUrl);
+    tdb = hubConnectAddHubForTrackAndFindTdb(database, track, &tdbList, trackHash);
     }
 else if (sameString(track, "hgPcrResult"))
     tdb = pcrResultFakeTdb();
 else
     {
     tdb = tdbForTrack(database, track,&tdbList);
     }
 if (tdb == NULL)
    {
    uglyAbort("Can't find %s in track database %s chromosome %s.  TrackHash has %d els",
 	    track, database, chromosome, trackHash->elCount);
    errAbort("Can't find %s in track database %s chromosome %s",
 	    track, database, chromosome);
    }
 char *super = trackDbGetSupertrackName(tdb);