def loadRules(fileTypeName, filename): """ Populate rule and multi_field_rule tables from rule rile Args: filename: File with rule specifications fileTypeName: Which type of file to load rules for """ validationDb = ValidatorValidationInterface() fileId = validationDb.getFileId(fileTypeName) with open(filename, 'rU') as ruleFile: reader = csv.DictReader(ruleFile) for record in reader: if(FieldCleaner.cleanString(record["is_single_field"]) == "true"): # Find column ID based on field name try: columnId = validationDb.getColumnId(FieldCleaner.cleanName(record["field_name"]),fileTypeName) except Exception as e: print("Failed on field " + FieldCleaner.cleanName(record["field_name"]) + " and file " + fileTypeName) raise e # Write to rule table if "rule_timing" in record and "rule_label" in record: validationDb.addRule(columnId,record["rule_type"],record["rule_text_one"],record["description"],record["rule_timing"],record["rule_label"]) else: validationDb.addRule(columnId,record["rule_type"],record["rule_text_one"],record["description"]) else: # Write to multi_field_rule table validationDb.addMultiFieldRule(fileId,record["rule_type"],record["rule_text_one"],record["rule_text_two"],record["description"])
def loadCrossRules(filename): """ Populate rule table with cross file validation rules """ validationDb = ValidatorValidationInterface() with open(filename, 'rU') as ruleFile: reader = csv.DictReader(ruleFile) for record in reader: fileId = validationDb.getFileId(record["file"]) if record["target_file"]: targetFileId = validationDb.getFileId(record["target_file"]) else: targetFileId = None # Look up rule timing id try: ruleTimingId = validationDb.getRuleTimingIdByName( FieldCleaner.cleanName(record["rule_timing"])) except Exception as e: raise Exception("".join( [str(e), "Cross-file rule load failed on timing value ", FieldCleaner.cleanName(record["rule_timing"]), " and file ", fileTypeName])) try: validationDb.addRule( None, record["rule_type"], record["rule_text_one"], record["rule_text_two"], record["description"], ruleTimingId, record["rule_label"], targetFileId, fileId = fileId) except Exception as e: raise Exception('{}: cross-file rule insert failed (rule={}'.format( e, record["description"]))
def loadRules(fileTypeName, filename): """ Populate rule table from rule rile Args: filename: File with rule specifications fileTypeName: Which type of file to load rules for """ validationDb = ValidatorValidationInterface() fileId = validationDb.getFileId(fileTypeName) with open(filename, 'rU') as ruleFile: reader = csv.DictReader(ruleFile) for record in reader: if (FieldCleaner.cleanString( record["is_single_field"]) == "true"): # Find column ID based on field name try: columnId = validationDb.getColumnId( FieldCleaner.cleanName(record["field_name"]), fileTypeName) except Exception as e: raise Exception("".join([ str(e), "Failed on field ", FieldCleaner.cleanName(record["field_name"]), " and file ", fileTypeName ])) else: # Multi field rules don't get a file_column columnId = None # Look up rule timing id try: ruleTimingId = validationDb.getRuleTimingIdByName( FieldCleaner.cleanName(record["rule_timing"])) except Exception as e: raise Exception("".join([ str(e), " Rule load failed on timing value ", FieldCleaner.cleanName(record["rule_timing"]), " and file ", fileTypeName ])) # Target file info is applicable to cross-file rules only targetFileId = None # Write to rule table try: validationDb.addRule(columnId, str(record["rule_type"]), str(record["rule_text_one"]), str(record["rule_text_two"]), str(record["description"]), ruleTimingId, str(record["rule_label"]), targetFileId=targetFileId, fileId=fileId) except Exception as e: raise Exception( '{}: rule insert failed (file={}, rule={}'.format( e, fileTypeName, record["description"]))
def loadRules(fileTypeName, filename): """ Populate rule table from rule rile Args: filename: File with rule specifications fileTypeName: Which type of file to load rules for """ validationDb = ValidatorValidationInterface() fileId = validationDb.getFileId(fileTypeName) with open(filename, 'rU') as ruleFile: reader = csv.DictReader(ruleFile) for record in reader: if(FieldCleaner.cleanString(record["is_single_field"]) == "true"): # Find column ID based on field name try: columnId = validationDb.getColumnId(FieldCleaner.cleanName(record["field_name"]),fileTypeName) except Exception as e: raise Exception("".join([str(e),"Failed on field ",FieldCleaner.cleanName(record["field_name"])," and file ",fileTypeName])) else: # Multi field rules don't get a file_column columnId = None # Look up rule timing id try: ruleTimingId = validationDb.getRuleTimingIdByName( FieldCleaner.cleanName(record["rule_timing"])) except Exception as e: raise Exception("".join( [str(e), " Rule load failed on timing value ", FieldCleaner.cleanName(record["rule_timing"]), " and file ", fileTypeName])) # Target file info is applicable to cross-file rules only targetFileId = None # Write to rule table try: validationDb.addRule(columnId, str(record["rule_type"]), str(record["rule_text_one"]), str(record["rule_text_two"]), str(record["description"]), ruleTimingId, str(record["rule_label"]), targetFileId=targetFileId, fileId=fileId) except Exception as e: raise Exception('{}: rule insert failed (file={}, rule={}'.format( e, fileTypeName, record["description"]))
def loadRules(fileTypeName, filename): """ Populate rule and multi_field_rule tables from rule rile Args: filename: File with rule specifications fileTypeName: Which type of file to load rules for """ validationDb = ValidatorValidationInterface() fileId = validationDb.getFileId(fileTypeName) with open(filename, 'rU') as ruleFile: reader = csv.DictReader(ruleFile) for record in reader: if (FieldCleaner.cleanString( record["is_single_field"]) == "true"): # Find column ID based on field name try: columnId = validationDb.getColumnId( FieldCleaner.cleanName(record["field_name"]), fileTypeName) except Exception as e: print("Failed on field " + FieldCleaner.cleanName(record["field_name"]) + " and file " + fileTypeName) raise e # Write to rule table if "rule_timing" in record and "rule_label" in record: validationDb.addRule(columnId, record["rule_type"], record["rule_text_one"], record["description"], record["rule_timing"], record["rule_label"]) else: validationDb.addRule(columnId, record["rule_type"], record["rule_text_one"], record["description"]) else: # Write to multi_field_rule table validationDb.addMultiFieldRule(fileId, record["rule_type"], record["rule_text_one"], record["rule_text_two"], record["description"])
def loadCrossRules(filename): """ Populate rule table with cross file validation rules """ validationDb = ValidatorValidationInterface() with open(filename, 'rU') as ruleFile: reader = csv.DictReader(ruleFile) for record in reader: fileId = validationDb.getFileId(record["file"]) if record["target_file"]: targetFileId = validationDb.getFileId( record["target_file"]) else: targetFileId = None # Look up rule timing id try: ruleTimingId = validationDb.getRuleTimingIdByName( FieldCleaner.cleanName(record["rule_timing"])) except Exception as e: raise Exception("".join([ str(e), "Cross-file rule load failed on timing value ", FieldCleaner.cleanName(record["rule_timing"]), " and file ", fileTypeName ])) try: validationDb.addRule(None, record["rule_type"], record["rule_text_one"], record["rule_text_two"], record["description"], ruleTimingId, record["rule_label"], targetFileId, fileId=fileId) except Exception as e: raise Exception( '{}: cross-file rule insert failed (rule={}'.format( e, record["description"]))