static void loadGbCdnaInfoRow(struct metaDataTbls* metaDataTbls, struct sqlConnection* conn, char** row) /* load one row from the gbCdnaInfo table */ { struct metaData* md; int len, numNonZero, iRow = 0; char *acc, *dir; boolean gotError, isOk; /* columns: acc,id,moddate,version,moddate,type */ acc = row[iRow++]; md = metaDataTblsGet(metaDataTbls, acc); if (md->inGbCdnaInfo) { gbError("%s: acc occurs multiple times in the mrna table", acc); return; } md->inGbCdnaInfo = TRUE; md->gbCdnaInfoId = strToUnsigned(row[iRow++], acc, "gbCdnaInfo.id", NULL); len = strlen(acc); md->gbCdnaInfoVersion = strToUnsigned(row[iRow++], "gbCdnaInfo.version", acc, &gotError); if (!gotError && (md->gbCdnaInfoVersion <= 0)) gbError("%s: gbCdnaInfo.version invalid: \"%d\"", acc, md->gbCdnaInfoVersion); isOk = TRUE; md->gbCdnaInfoModdate = gbParseChkDate(row[iRow++], &isOk); if (!isOk) gbError("%s: invalid gbCdnaInfo.moddate value: \"%s\"", acc, row[iRow-1]); md->gbCdnaInfoType = gbParseType(row[iRow++]); md->typeFlags |= md->gbCdnaInfoType; dir = row[iRow++]; if ((strlen(dir) > 1) || (strchr("053", *dir) == NULL)) gbError("%s: invalid gbCdnaInfo.direction value: \"%s\"", acc, dir); /* Make sure that at least a few of the id fields have data */ numNonZero = 0; while (iRow < 20) { int id = strToUnsigned(row[iRow++], md->acc, "gbCdnaInfo.?", NULL); if (id > 0) numNonZero++; /* remember if we have a description */ if (iRow-1 == 16) md->haveDesc = (id != 0); } if (numNonZero == 0) gbError("%s: none of gbCdnaInfo string ids have non-zero values", dir); else if (numNonZero < 4) gbError("%s: only %d of gbCdnaInfo string ids have non-zero values", dir, numNonZero); }
time_t gbParseDate(struct lineFile* lf, char* dateStr) /* parse a date, in YYYY-MM-DD format, converting it to a unix time (as * returned by time()). If lf is not null, the file information will be * included in error message. */ { boolean isOk = TRUE; time_t numTime = gbParseChkDate(dateStr, &isOk); if (!isOk) { if (lf != NULL) errAbort("invalid date \"%s\" in %s line %d, must be YYYY-MM-DD", dateStr, lf->fileName, lf->lineIx); else errAbort("invalid date \"%s\", must be YYYY-MM-DD", dateStr); } return numTime; }
static void loadGbStatusRow(struct metaDataTbls* metaDataTbls, struct sqlConnection* conn, char** row, unsigned descOrgCats) /* load a row of the gbStatus table */ { struct metaData* md; int iRow = 0; boolean isOk; HGID seqId; /* columns: acc,version,modDate,type,srcDb,gbSeq,numAligns */ md = metaDataTblsGet(metaDataTbls, row[iRow++]); if (md->inGbStatus) gbError("%s: occurs multiple times in the gbStatus table", md->acc); md->inGbStatus = TRUE; md->gbsVersion = strToUnsigned(row[iRow++], md->acc, "gbStatus.version", NULL); isOk = TRUE; md->gbsModDate = gbParseChkDate(row[iRow++], &isOk); if (!isOk) gbError("%s: invalid gbStatus.moddate value: \"%s\"", md->acc, row[iRow-1]); md->gbsType = gbParseType(row[iRow++]); md->gbsSrcDb = gbParseSrcDb(row[iRow++]); md->gbsOrgCat = gbParseOrgCat(row[iRow++]); seqId = strToUnsigned(row[iRow++], md->acc, "gbStatus.gbSeq", NULL); md->gbsNumAligns = strToUnsigned(row[iRow++], md->acc, "gbStatus.numAligns", NULL); md->typeFlags |= md->gbsType; if (md->inGbCdnaInfo) { if (seqId != md->gbCdnaInfoId) gbError("%s: gbStatus.gbSeq (%d) not same gbCdnaInfo.id (%d)", md->acc, seqId, md->gbCdnaInfoId); if (md->gbsType != md->gbCdnaInfoType) gbError("%s: gbStatus.type (%s) not same as gbCdnaInfo.type (%s)", md->acc, gbFmtSelect(md->gbsType), gbFmtSelect(md->gbCdnaInfoType)); if (md->gbsSrcDb != (md->typeFlags & GB_SRC_DB_MASK)) gbError("%s: gbStatus.srcDb (%s) not same gbCdnaInfo.srcDb (%s)", md->acc, gbFmtSelect(md->gbsSrcDb), gbFmtSelect(md->typeFlags)); if (md->gbsVersion != md->gbCdnaInfoVersion) gbError("%s: gbStatus.version (%d) not same gbCdnaInfo.version (%d)", md->acc, md->gbsVersion, md->gbCdnaInfoVersion); if ((md->gbsModDate != md->gbCdnaInfoModdate)) gbError("%s: gbStatus.modDate (%s) not same gbCdnaInfo.moddate (%s)", md->acc, gbFormatDate(md->gbsModDate), gbFormatDate(md->gbCdnaInfoModdate)); /* verify either have or don't have a description */ if (descOrgCats & md->gbsOrgCat) { if (!md->haveDesc) gbError("%s: should have gbCdnaInfo.description: %s", md->acc, gbFmtSelect(md->gbsType|md->gbsOrgCat|md->gbsSrcDb)); } else { if (md->haveDesc) gbError("%s: should not have gbCdnaInfo.description: %s", md->acc, gbFmtSelect(md->gbsType|md->gbsOrgCat|md->gbsSrcDb)); } } }