47e0208dfc2fc4eba1994d81c1276f8092e6ce2d tdreszer Thu Mar 24 13:54:35 2011 -0700 Renamed a bunch of mdbCv APIs to cv APIs. diff --git src/hg/lib/mdb.c src/hg/lib/mdb.c index 7505c50..0259e62 100644 --- src/hg/lib/mdb.c +++ src/hg/lib/mdb.c @@ -1990,40 +1990,40 @@ } } if(keepTheseVars != NULL) slReverse(&keepTheseVars); mdbObj->vars = keepTheseVars; } if(words != NULL) freeMem(words); } void mdbObjRemoveHiddenVars(struct mdbObj *mdbObjs) // Prunes list of vars for mdb objs that have been declared as hidden in cv.ra typeOfTerms { // make comma delimited list of hidden vars -struct hash *cvTermTypes = (struct hash *)mdbCvTermTypeHash(); +struct hash *cvTermTypes = (struct hash *)cvTermTypeHash(); struct hashEl *el, *elList = hashElListHash(cvTermTypes); struct dyString *dyRemoveVars = dyStringNew(256); for (el = elList; el != NULL; el = el->next) { struct hash *varHash = el->val; if (SETTING_IS_ON(hashFindVal(varHash, CV_TOT_HIDDEN))) { - assert(mdbCvSearchMethod(el->name) == cvsNotSearchable); // Good idea to assert but cv.ra is a user updatable file + assert(cvSearchMethod(el->name) == cvNotSearchable); // Good idea to assert but cv.ra is a user updatable file dyStringPrintf(dyRemoveVars,"%s ",el->name); } } hashElFreeList(&elList); if (dyStringLen(dyRemoveVars)) mdbObjRemoveVars(mdbObjs, dyStringContents(dyRemoveVars)); dyStringFree(&dyRemoveVars); } char *mdbRemoveCommonVar(struct mdbObj *mdbList, char *var) // Removes var from set of mdbObjs but only if all that have it have a commmon val // Returns the val if removed, else NULL { @@ -2306,31 +2306,31 @@ struct slName *mdbNames = NULL; struct mdbObj *mdbObj = mdbObjs; for( ;mdbObj!=NULL; mdbObj=mdbObj->next) { slAddHead(&mdbNames,slNameNew(mdbObj->obj)); //allocates memory } slReverse(&mdbNames); return mdbNames; } // ----------------- Validateion and specialty APIs ----------------- int mdbObjsValidate(struct mdbObj *mdbObjs, boolean full) // Validates vars and vals against cv.ra. Returns count of errors found. // Full considers vars not defined in cv as invalids { -struct hash *termTypeHash = (struct hash *)mdbCvTermTypeHash(); +struct hash *termTypeHash = (struct hash *)cvTermTypeHash(); struct mdbObj *mdbObj = NULL; int invalids = 0; for( mdbObj=mdbObjs; mdbObj!=NULL; mdbObj=mdbObj->next ) { struct mdbVar *mdbVar = NULL; for(mdbVar = mdbObj->vars;mdbVar != NULL;mdbVar=mdbVar->next) { struct hash *termHash = hashFindVal(termTypeHash,mdbVar->var); if (termHash == NULL) // No cv definition for term so no validation can be done { if (!full) continue; if (sameString(mdbVar->var,MDB_OBJ_TYPE) && ( sameString(mdbVar->val,MDB_OBJ_TYPE_TABLE) || sameString(mdbVar->val,MDB_OBJ_TYPE_FILE) @@ -2349,49 +2349,49 @@ // NOTE: Working on memory in hash but we are throwing away a comment and removing trailing spaces so that is okay strSwapChar(validationRule,'#','\0'); // Chop off any comment in the setting validationRule = trimSpaces(validationRule); // Validate should be or start with known word if (startsWithWord(CV_VALIDATE_CV,validationRule)) { if (SETTING_NOT_ON(hashFindVal(termHash,CV_TOT_CV_DEFINED))) // Known type of term but no validation to be done { verbose(1,"ERROR in %s: Term '%s' says validate in cv but is not '%s'.\n",CV_FILE_NAME,mdbVar->var,CV_TOT_CV_DEFINED); continue; } // cvDefined so every val should be in cv - struct hash *cvTermHash = (struct hash *)mdbCvTermHash(mdbVar->var); - if (cvTermHash == NULL) + struct hash *cvHashForTerm = (struct hash *)cvTermHash(mdbVar->var); + if (cvHashForTerm == NULL) { verbose(1,"ERROR in %s: Term '%s' says validate in cv but not found as a cv term.\n",CV_FILE_NAME,mdbVar->var); continue; } - if (hashFindVal(cvTermHash,mdbVar->val) == NULL) // No cv definition for term so no validation can be done + if (hashFindVal(cvHashForTerm,mdbVar->val) == NULL) // No cv definition for term so no validation can be done { if (sameString(validationRule,CV_VALIDATE_CV_OR_NONE) && sameString(mdbVar->val,MDB_VAL_ENCODE_EDV_NONE)) continue; else if (sameString(validationRule,CV_VALIDATE_CV_OR_CONTROL)) { - cvTermHash = (struct hash *)mdbCvTermHash(CV_TERM_CONTROL); - if (cvTermHash == NULL) + cvHashForTerm = (struct hash *)cvTermHash(CV_TERM_CONTROL); + if (cvHashForTerm == NULL) { verbose(1,"ERROR in %s: Term '%s' says validate in cv but not found as a cv term.\n",CV_FILE_NAME,CV_TERM_CONTROL); continue; } - if (hashFindVal(cvTermHash,mdbVar->val) != NULL) + if (hashFindVal(cvHashForTerm,mdbVar->val) != NULL) continue; } printf("INVALID cv lookup: %s -> %s = %s\n",mdbObj->obj,mdbVar->var,mdbVar->val); invalids++; } } else if (startsWithWord(CV_VALIDATE_DATE,validationRule)) { if (dateToSeconds(mdbVar->val,"%F") == 0) { printf("INVALID date: %s -> %s = %s\n",mdbObj->obj,mdbVar->var,mdbVar->val); invalids++; } } else if (startsWithWord(CV_VALIDATE_EXISTS,validationRule)) @@ -2955,38 +2955,38 @@ return mdbObjs; } struct mdbObj *mdbObjRepeatedSearch(struct sqlConnection *conn,struct slPair *varValPairs,boolean tables,boolean files) // Search the metaDb table for objs by var,val pairs. Uses mdbCvSearchMethod() if available. // This method will use mdbObjsQueryByVars() { struct slPair *onePair; struct dyString *dyTerms = dyStringNew(256); // Build list of terms as "var1=val1 var2=val2a,val2b,val2c var3=%val3%" for(onePair = varValPairs; onePair != NULL; onePair = onePair->next) { if (isEmpty(((char *)(onePair->val)))) // NOTE: All the parens are needed to get the macro to do the right thing continue; - enum mdbCvSearchable searchBy = mdbCvSearchMethod(onePair->name); - if (searchBy == cvsSearchBySingleSelect || searchBy == cvsSearchByMultiSelect) // multiSelect val will be filled with a comma delimited list + enum cvSearchable searchBy = cvSearchMethod(onePair->name); + if (searchBy == cvSearchBySingleSelect || searchBy == cvSearchByMultiSelect) // multiSelect val will be filled with a comma delimited list dyStringPrintf(dyTerms,"%s=%s ",onePair->name,(char *)onePair->val); - else if (searchBy == cvsSearchByFreeText) // If select is by free text then like + else if (searchBy == cvSearchByFreeText) // If select is by free text then like dyStringPrintf(dyTerms,"%s=%%%s%% ",onePair->name,(char *)onePair->val); else if (sameWord(onePair->name,MDB_VAR_COMPOSITE)) // special case. Not directly searchable by UI but indirectly and will show up here. dyStringPrintf(dyTerms,"%s=%s ",onePair->name,(char *)onePair->val); - else if (searchBy == cvsSearchByDateRange || searchBy == cvsSearchByIntegerRange) + else if (searchBy == cvSearchByDateRange || searchBy == cvSearchByIntegerRange) { // TO BE IMPLEMENTED // Requires new mdbObjSearch API and more than one (char *)onePair->val warn("mdb search by date or number is not yet implemented."); } } // Be sure to include table or file in selections if (tables) dyStringPrintf(dyTerms,"%s=%s ",MDB_OBJ_TYPE,MDB_OBJ_TYPE_TABLE); if (files) dyStringPrintf(dyTerms,"%s=? ",MDB_VAR_FILENAME); // Build the mdbByVals struct and then select all mdbObjs in one query struct mdbByVar *mdbByVars = mdbByVarsLineParse(dyStringContents(dyTerms)); dyStringClear(dyTerms);