def dbBuildTableForImage(img, bld_imgdb = False, bld_dfxmldb = False): """ This routine builds/adds the DFXML table entry to the DB for the specified image. This is needed where a user selects an individual image in the image matrix and opts to add or delete corresponding table. """ table_added = 0 if bld_dfxmldb: table_name = "bcaw_dfxmlinfo" elif bld_imgdb: table_name = "bcaw_images" else: # if bld_imgdb == False and bld_dfxmldb == False: return(-1, "No DB Specified") if not image_browse.bcaw_is_imgtype_supported(img): return(-1, "Wrong Image Type") # No need to create table if it already exists if dbu_does_table_exist_for_img(img, table_name): return(-2, "Table entry exists for the image") else: db_login.create_all() table_added += 1 if bld_imgdb: # By setting image to None, it sets the flags for all images. We don't # do individual flag setting for imgdb. image_browse.bcawSetFlagInMatrix('img_db_exists', bld_imgdb, None) if bld_dfxmldb: image_browse.bcawSetFlagInMatrix('dfxml_db_exists', bld_dfxmldb, img) # FIXME: Partition info will be added to the metadata info # Till then the following three lines are not necessary. image_index = image_browse.bcawGetImageIndex(str(img), False) dm = bcaw() image_path = image_dir+'/'+img dm.num_partitions = dm.bcawGetNumPartsForImage(image_path, image_index) xmlfile = dm.dbGetImageInfoXml(image_path) if (xmlfile == None): logging.debug('No XML file generated for image info. Returning') # Commented out returning from here since there might be cases (raw images) # which don't have an image table, but can have a dfxml table ## return (-1, "No Image XML File generated") logging.debug('XML File %s generated for image', xmlfile) dfxmlfile = dm.dbGetInfoFromDfxml(image_path) if (dfxmlfile == None): logging.debug('>> No DFXML file generated for image info. Returning') return (-1, "No DFXML generated") logging.debug('>> DFXML File %s generated for image', dfxmlfile) # Read the XML file and populate the record for this image if bld_imgdb: dbrec = bcawGetXmlInfo(xmlfile) # FIXME: Retained temporarily. Probably not needed. dbrec['image_name'] = img dbrec['indexed'] = 0 # Just initialize to something # Populate the db: # Add the created record/session to the DB bcawDbSessionAdd(dbrec) if bld_dfxmldb: d_dbrec = bcawGetDfxmlInfo(dfxmlfile, img) if table_added > 0: return(0, "New tables added to the DB") else: retstr = "Table entries exist for the image " + img return(0, retstr)
def dbBuildTableForImage(img, bld_imgdb = False, bld_dfxmldb = False): """ This routine builds/adds the DFXML table entry to the DB for the specified image. This is needed where a user selects an individual image in the image matrix and opts to add or delete corresponding table. """ table_added = 0 if bld_imgdb and bld_dfxmldb: # table_name set to dfxmlinfo - if it exists, bcaw_images has to be there. table_name = "bcaw_dfxmlinfo" else: if bld_imgdb: table_name = "bcaw_images" elif bld_dfxmldb: table_name = "bcaw_dfxmlinfo" else: # if bld_imgdb == False and bld_dfxmldb == False: return(-1, "No DB Specified") if not img.endswith(".E01") or img.endswith(".AFF"): logging.debug('>> Not building Table: Wrong image type: %s', img) # print ">> Not building Table: Wrong image type: ", img return(-1, "Wrong Image Type") # No need to create table if it already exists if dbu_does_table_exist_for_img(img, table_name): logging.debug('>> Table already exists for image %s', img) # print ">> Table already exists for image " , img return(-2, "Table entry exists for the image") else: logging.debug('>> Table for image %s does not exist', img) # print ">> Table for image {} does not exist: ".format(img) db_login.create_all() table_added += 1 if bld_imgdb: # update the image_matrix logging.debug('D: dbBuildTableForImage: Updating the matrix for img_db_exists') # print "D: dbBuildTableForImage: Updating the matrix for img_db_exists " # By setting image to None, it sets the flags for all images. We don't # do individual flag setting for imgdb. image_browse.bcawSetFlagInMatrix('img_db_exists', bld_imgdb, None) if bld_dfxmldb: logging.debug('D: dbBuildTableForImage: Updating the matrix for dfxml_db_exists') # print "D: dbBuildTableForImage: Updating the matrix for dfxml_db_exists " image_browse.bcawSetFlagInMatrix('dfxml_db_exists', bld_dfxmldb, img) # FIXME: Partition info will be added to the metadata info # Till then the following three lines are not necessary. image_index = image_browse.bcawGetImageIndex(str(img), False) dm = bcaw_utils.bcaw() image_path = image_dir+'/'+img dm.num_partitions = dm.bcawGetNumPartsForImage(image_path, image_index) xmlfile = dm.dbGetImageInfoXml(image_path) if (xmlfile == None): logging.debug('No XML file generated for image info. Returning') # print("No XML file generated for image info. Returning") return (-1, "No Image XML File generated") logging.debug('XML File %s generated for image', xmlfile) # print("XML File {} generated for image {}".format(xmlfile, img)) dfxmlfile = dm.dbGetInfoFromDfxml(image_path) if (dfxmlfile == None): logging.debug('>> No DFXML file generated for image info. Returning') # print(">> No DFXML file generated for image info. Returning") return (-1, "No DFXML generated") logging.debug('>> DFXML File %s generated for image', dfxmlfile) # print(">> DFXML File {} generated for image {}".format(dfxmlfile, img)) # Read the XML file and populate the record for this image if bld_imgdb: dbrec = bcawGetXmlInfo(xmlfile) # FIXME: Retained temporarily. Probably not needed. ##dbu_create_table_if_doesntexist("bcaw_images") dbrec['image_name'] = img dbrec['indexed'] = 0 # Just initialize to something # Populate the db: # Add the created record/session to the DB bcawDbSessionAdd(dbrec) ## print("D: Adding dbrec session to the DB: ", dbrec) if bld_dfxmldb: d_dbrec = bcawGetDfxmlInfo(dfxmlfile, img) if table_added > 0: return(0, "New tables added to the DB") else: retstr = "Table entries exist for the image " + img return(0, retstr)