char *docIdSubmit(struct sqlConnection *conn, char *docIdTable, struct docIdSub *docIdSub, char *docIdDir, char *type) { verbose(2, "Submitting------\n"); verbose(2, "status %d\n", docIdSub->status); verbose(2, "assembly %s\n", docIdSub->assembly); verbose(2, "submitDate %s\n", docIdSub->submitDate); verbose(2, "md5sum %s\n", docIdSub->md5sum); verbose(2, "valReport %s\n", docIdSub->valReport); verbose(2, "valVersion %s\n", docIdSub->valVersion); verbose(2, "metaData %s\n", docIdSub->metaData); verbose(2, "submitPath %s\n", docIdSub->submitPath); verbose(2, "submitter %s\n", docIdSub->submitter); verbose(2, "type %s\n", type); char query[1024 * 1024]; fillNull(&docIdSub->valReport); fillNull(&docIdSub->md5sum); sqlSafef(query, sizeof query, "insert into %s (status, assembly, submitDate, md5sum, valReport, valVersion, metaData, submitPath, submitter) values (\"%d\",\"%s\",\"%s\",\"%s\", \"%s\", \"%s\", \"%s\",\"%s\",\"%s\")\n", docIdTable, docIdSub->status, docIdSub->assembly, docIdSub->submitDate, docIdSub->md5sum, docIdSub->valReport, docIdSub->valVersion, docIdSub->metaData, docIdSub->submitPath, docIdSub->submitter); //docIdSub->submitDate, docIdSub->md5sum, docIdSub->valReport, "null", docIdSub->submitPath, docIdSub->submitter); //printf("query is %s\n", query); char *response = sqlQuickString(conn, query); printf("submitted got response %s\n", response); sqlSafef(query, sizeof query, "select last_insert_id()"); char *docId = cloneString(sqlQuickString(conn, query)); printf("submitted got docId %s\n", docId); if (!fileExists(docIdSub->submitPath)) errAbort("cannot open %s\n", docIdSub->submitPath); char *linkToFile = docIdGetPath(docId, docIdDir, type, docIdSub->submitPath); printf("linking %s to file %s\n", docIdSub->submitPath, linkToFile); char *slash = strrchr(linkToFile, '/'); if (slash == NULL) errAbort("can't find slash in path %s\n", linkToFile); *slash = 0; makeDirsOnPath(linkToFile); *slash = '/'; if (link(docIdSub->submitPath, linkToFile) < 0) errnoAbort("can't link %s to file %s\n", docIdSub->submitPath, linkToFile); return docId; }
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); }