4898794edd81be5285ea6e544acbedeaeb31bf78 max Tue Nov 23 08:10:57 2021 -0800 Fixing pointers to README file for license in all source code files. refs #27614 diff --git src/hg/encode/docId/docIdView/docIdView.c src/hg/encode/docId/docIdView/docIdView.c index 1349d68..0fc7955 100644 --- src/hg/encode/docId/docIdView/docIdView.c +++ src/hg/encode/docId/docIdView/docIdView.c @@ -1,269 +1,269 @@ /* docIdView - cgi to show metadata from docId table. */ /* Copyright (C) 2013 The Regents of the University of California - * See README in this or parent directory for licensing information. */ + * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" #include "jksql.h" #include "htmshell.h" #include "web.h" #include "cheapcgi.h" #include "cart.h" #include "hui.h" #include "docId.h" #include "mdb.h" #include "portable.h" #include "trashDir.h" #include "dystring.h" /* Global Variables */ struct cart *cart; /* CGI and other variables */ struct hash *oldVars = NULL; char *database = "encpipeline_prod"; char *docIdTable = DEFAULT_DOCID_TABLE; //char *docIdDir = "/hive/groups/encode/dcc/pipeline/downloads/docId"; char *docIdDir = "http://hgdownload-test.soe.ucsc.edu/goldenPath/docId"; char *docIdDirBeta = "http://hgdownload-test.soe.ucsc.edu/goldenPath/betaDocId"; void addValue(struct dyString *str, char *value) { if ((value != NULL) && !sameString(value, "None")) { dyStringPrintf(str, "%s, ", value); } } void doStandard(struct cart *theCart) { cart = theCart; cartWebStart(cart, database, "ENCODE DCC Submissions"); struct sqlConnection *conn = sqlConnect(database); struct docIdSub *docIdSub; char query[10 * 1024]; struct sqlResult *sr; char **row; struct tempName tn; trashDirFile(&tn, "docId", "meta", ".txt"); char *tempFile = tn.forCgi; //printf("tempFile is %s\n<BR>", tempFile); // <Data type> <Cell Type> <Key Metadata> <View> printf("<table border=1><tr>"); printf("<th>date submitted</th>"); printf("<th>dataType</th>"); printf("<th>cell type</th>"); printf("<th>metadata</th>"); // printf("<th>view</th>"); printf("<th>fileType</th>"); printf("<th>file</th>"); printf("<th>lab</th>"); printf("<th>assembly</th>"); printf("<th>subId</th>"); printf("<th>val-report</th>"); printf("</tr>\n"); sqlSafef(query, sizeof query, "select * from %s", docIdTable); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) { docIdSub = docIdSubLoad(row); verbose(2, "ix %d\n", docIdSub->ix); verbose(2, "submitDate %s\n", docIdSub->submitDate); verbose(2, "md5sum %s\n", docIdSub->md5sum); verbose(2, "valReport %s\n", docIdSub->valReport); verbose(2, "metaData %s\n", docIdSub->metaData); verbose(2, "submitPath %s\n", docIdSub->submitPath); verbose(2, "submitter %s\n", docIdSub->submitter); cgiDecode(docIdSub->metaData, docIdSub->metaData, strlen(docIdSub->metaData)); //printf("tempFile %s\n", tempFile); FILE *f = mustOpen(tempFile, "w"); fwrite(docIdSub->metaData, strlen(docIdSub->metaData), 1, f); fclose(f); //boolean validated = FALSE; struct mdbObj *mdbObj = mdbObjsLoadFromFormattedFile(tempFile, NULL); unlink(tempFile); // <Data type> <Cell Type> <Key Metadata> <View> char *docIdType = mdbObjFindValue(mdbObj, "type"); char *docIdComposite = mdbObjFindValue(mdbObj, "composite"); char buffer[10 * 1024]; char *cellFromMetaData = mdbObjFindValue(mdbObj, "cell"); safef(buffer, sizeof buffer, "%d", docIdSub->ix); if (sameString(database, "encpipeline_beta")) docIdDir = docIdDirBeta; printf("<tr>"); printf("<td>%s</td> ", docIdSub->submitDate); printf("<td>%s</td> ", mdbObjFindValue(mdbObj, "dataType")); printf("<td>%s</td> ", cellFromMetaData); struct dyString *str = newDyString(100); addValue(str, mdbObjFindValue(mdbObj, "antibody")); addValue(str, mdbObjFindValue(mdbObj, "treatment")); addValue(str, mdbObjFindValue(mdbObj, "rnaExtract")); addValue(str, mdbObjFindValue(mdbObj, "localization")); printf("<td>%s<a href=docIdView?docId=%s&db=%s&meta=\"\"> ...</a></td>", str->string,buffer, database); freeDyString(&str); // printf("<td>%s</td> ", mdbObjFindValue(mdbObj, "view")); printf("<td>%s</td> ", mdbObjFindValue(mdbObj, "type")); printf("<td><a href=%s> %s</a></td>", docIdGetPath(buffer, docIdDir, docIdType, NULL) , docIdDecorate(docIdComposite, cellFromMetaData, docIdSub->ix)); char *lab = mdbObjFindValue(mdbObj, "lab"); char *subId = mdbObjFindValue(mdbObj, "subId"); printf("<td><a href=docIdView?docId=%s&db=%s&lab=\"%s\"> %s</a></td>",buffer, database, subId, lab); printf("<td>%s</td> ", mdbObjFindValue(mdbObj, "assembly")); printf("<td>%s</td> ", subId); printf("<td><a href=docIdView?docId=%s&db=%s&report=\"\"> report</a></td>", buffer, database); printf("</tr>\n"); } printf("</table>"); sqlFreeResult(&sr); sqlDisconnect(&conn); cartWebEnd(); } void doDocIdMeta(struct cart *theCart) { char *docId = cartString(theCart, "docId"); cartWebStart(cart, database, "ENCODE DCC: Metadata for docId %s",docId); struct sqlConnection *conn = sqlConnect(database); char query[10 * 1024]; struct sqlResult *sr; char **row; struct tempName tn; trashDirFile(&tn, "docId", "meta", ".txt"); char *tempFile = tn.forCgi; boolean beenHere = FALSE; printf("<a href=docIdView?db=%s> Return </a><BR>", database); sqlSafef(query, sizeof query, "select * from %s where ix=%s", docIdTable,docId); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) { if (beenHere) errAbort("found more than one record with ix value %s in table %s", docId, docIdTable); beenHere = TRUE; struct docIdSub *docIdSub = docIdSubLoad(row); cgiDecode(docIdSub->metaData, docIdSub->metaData, strlen(docIdSub->metaData)); //printf("tempFile is %s\n<BR>", tempFile); FILE *f = mustOpen(tempFile, "w"); fwrite(docIdSub->metaData, strlen(docIdSub->metaData), 1, f); fclose(f); boolean validated; struct mdbObj *mdbObj = mdbObjsLoadFromFormattedFile(tempFile, &validated); unlink(tempFile); if (mdbObj->next) errAbort("got more than one metaObj from metaData"); for(; mdbObj; mdbObj = mdbObj->next) { printf("<BR>object: %s\n", mdbObj->obj); struct mdbVar *vars = mdbObj->vars; for(; vars; vars = vars->next) { printf("<BR>%s %s\n", vars->var, vars->val); } } } cartWebEnd(); } void doDocIdReport(struct cart *theCart) { char *docId = cartString(theCart, "docId"); cartWebStart(cart, database, "ENCODE DCC: Validation report for docId %s",docId); struct sqlConnection *conn = sqlConnect(database); char query[10 * 1024]; struct sqlResult *sr; char **row; boolean beenHere = FALSE; printf("<a href=docIdView?db=%s> Return </a><BR>", database); sqlSafef(query, sizeof query, "select * from %s where ix=%s", docIdTable,docId); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) { if (beenHere) errAbort("found more than one record with ix value %s in table %s", docId, docIdTable); beenHere = TRUE; struct docIdSub *docIdSub = docIdSubLoad(row); cgiDecode(docIdSub->valReport, docIdSub->valReport, strlen(docIdSub->valReport)); //printf("tempFile is %s\n<BR>", tempFile); printf("<pre>%s", docIdSub->valReport); } cartWebEnd(); } void doLabContacts(struct cart *theCart) { char *subId = cartString(theCart, "lab"); cartWebStart(cart, database, "ENCODE DCC: Contacts for submission: %s",subId); struct sqlConnection *conn = sqlConnect(database); char query[10 * 1024]; struct sqlResult *sr; char **row; printf("<a href=docIdView?db=%s> Return </a><BR>", database); sqlSafef(query, sizeof query, "select user_id from %s where id = %s ", "projects",subId); char *userId = sqlQuickString(conn, query); sqlSafef(query, sizeof query, "select name,email,pi from %s where id = '%s' ", "users",userId); sr = sqlGetResult(conn, query); printf("<pre>"); while ((row = sqlNextRow(sr)) != NULL) { printf("Name: %s\nEmail: %s\nPI: %s", row[0], row[1], row[2]); } sqlFreeResult(&sr); sqlDisconnect(&conn); cartWebEnd(); } void doMiddle(struct cart *theCart) /* Set up globals and make web page */ { if (cgiVarExists("docId")) { if (cgiVarExists("meta")) doDocIdMeta(theCart); else if (cgiVarExists("report")) doDocIdReport(theCart); else if (cgiVarExists("lab")) doLabContacts(theCart); } else doStandard(theCart); } /* Null terminated list of CGI Variables we don't want to save * permanently. */ char *excludeVars[] = {"Submit", "submit", "docId", NULL,}; int main(int argc, char *argv[]) /* Process command line. */ { cgiSpoof(&argc, argv); if (cgiVarExists("db")) { database=cgiOptionalString("db"); } cartEmptyShell(doMiddle, hUserCookie(), excludeVars, oldVars); return 0; }