void docIdReport(char *database) /* docIdReport - generate report from docIdSub table. */ { struct sqlConnection *conn = sqlConnect(database); struct docIdSub *docIdSub; char query[10 * 1024]; struct sqlResult *sr; char **row; safef(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)); char *tempFile = "temp"; FILE *f = mustOpen(tempFile, "w"); fwrite(docIdSub->metaData, strlen(docIdSub->metaData), 1, f); fclose(f); boolean validated; struct mdbObj *mdbObj = mdbObjsLoadFromFormattedFile(tempFile, &validated); printf("%s %s %s %s %s\n", docIdDecorate(docIdSub->ix), mdbObjFindValue(mdbObj, "dataType"), mdbObjFindValue(mdbObj, "view"), mdbObjFindValue(mdbObj, "cell"), mdbObjFindValue(mdbObj, "lab")); } sqlFreeResult(&sr); sqlDisconnect(&conn); }
struct hash *getMetaDbHash(char *metaDb, struct mdbObj **head) { boolean validated = FALSE; struct mdbObj *mdbObjs = mdbObjsLoadFromFormattedFile(metaDb, &validated), *mdbObj; struct hash *hash = newHash(10); for(mdbObj = mdbObjs; mdbObj; mdbObj = mdbObj->next) hashAdd(hash, mdbObj->obj, mdbObj); *head = mdbObjs; return hash; }
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); safef(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 metaCollect(char *metaDb, char *reqViewsName, char *expVarsName) /* metaCollect - build collections using metadata. */ { boolean validated; struct mdbObj *mdbObjs = mdbObjsLoadFromFormattedFile(metaDb, &validated); struct slName *expVars = slNameLoadReal(expVarsName); struct slName *reqViews = slNameLoadReal(reqViewsName); struct group *groups = groupByExpVar(mdbObjs, expVars); checkOverlap(mdbObjs, groups); checkForReqView(groups, reqViews); }
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>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"); safef(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; struct mdbObj *mdbObj = mdbObjsLoadFromFormattedFile(tempFile, &validated); unlink(tempFile); // <Data type> <Cell Type> <Key Metadata> <View> char *docIdType = mdbObjFindValue(mdbObj, "type"); char *docIdComposite = mdbObjFindValue(mdbObj, "composite"); char buffer[10 * 1024]; safef(buffer, sizeof buffer, "%d", docIdSub->ix); if (sameString(database, "encpipeline_beta")) docIdDir = docIdDirBeta; printf("<tr>"); printf("<td>%s</td> ", mdbObjFindValue(mdbObj, "dataType")); printf("<td>%s</td> ", mdbObjFindValue(mdbObj, "cell")); 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,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 docIdTidy(char *database, char *docIdDir) /* docIdTidy - tidy up the docId library by compressing and md5suming where appropriate. */ { char query[10 * 1024]; struct sqlResult *sr; char **row; struct sqlConnection *conn = sqlConnect(database); struct tempName tn; trashDirFile(&tn, "docId", "meta", ".txt"); char *tempFile = tn.forCgi; struct toDoList *toDoList = NULL; safef(query, sizeof query, "select * from %s", docIdTable); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) { struct docIdSub *docIdSub = docIdSubLoad(row); cgiDecode(docIdSub->metaData, docIdSub->metaData, strlen(docIdSub->metaData)); FILE *f = mustOpen(tempFile, "w"); fwrite(docIdSub->metaData, strlen(docIdSub->metaData), 1, f); fclose(f); boolean validated; //printf("metadata is %s\n", docIdSub->metaData); struct mdbObj *mdbObj = mdbObjsLoadFromFormattedFile(tempFile, &validated); unlink(tempFile); char *docIdType = mdbObjFindValue(mdbObj, "type"); char buffer[10 * 1024]; safef(buffer, sizeof buffer, "%d", docIdSub->ix); char *path = docIdGetPath(buffer, docIdDir, docIdType, NULL); //docIdDecorate(docIdSub->ix)); printf("path %s\n", path); struct toDoList *toDoItem = NULL; if (!fileIsCompressed(path)) { if (toDoItem == NULL) AllocVar(toDoItem); printf("foo\n"); toDoItem->needs |= NEEDS_COMPRESSION; toDoItem->path = path; toDoItem->docId = docIdSub->ix; } printf("docId %d md5sum %s valReport %s\n",docIdSub->ix, docIdSub->md5sum, docIdSub->valReport); //if (docIdSub->md5sum == NULL) if (sameString(docIdSub->md5sum, "")) { printf("mdsum\n"); if (toDoItem == NULL) AllocVar(toDoItem); toDoItem->needs |= NEEDS_MD5SUM; toDoItem->path = path; toDoItem->docId = docIdSub->ix; } //if (docIdSub->valReport == NULL) if (sameString(docIdSub->valReport,"")) { printf("report\n"); if (toDoItem == NULL) AllocVar(toDoItem); toDoItem->needs |= NEEDS_REPORT; toDoItem->path = path; toDoItem->docId = docIdSub->ix; } if (toDoItem) slAddHead(&toDoList, toDoItem); } sqlFreeResult(&sr); doCompression(toDoList); doReports(toDoList); doMd5Summing(toDoList); }