question: public DataFileFooter readDataFileFooter ( String filePath , long blockOffset , long blockLength ) throws IOException { DataFileFooter dataFileFooter = new DataFileFooter ( ) ; FileHolder fileReader = null ; try { long completeBlockLength = blockOffset + blockLength ; long footerPointer = completeBlockLength - 8 ; fileReader = FileFactory . getFileHolder ( FileFactory . getFileType ( filePath ) ) ; long actualFooterOffset = fileReader . readLong ( filePath , footerPointer ) ; CarbonFooterReader reader = new CarbonFooterReader ( filePath , actualFooterOffset ) ; FileFooter footer = reader . readFooter ( ) ; dataFileFooter . setVersionId ( footer . getVersion ( ) ) ; dataFileFooter . setNumberOfRows ( footer . getNum_rows ( ) ) ; dataFileFooter . setSegmentInfo ( getSegmentInfo ( footer . getSegment_info ( ) ) ) ; List < ColumnSchema > columnSchemaList = new ArrayList < ColumnSchema > ( ) ; List < org . apache . carbondata . format . ColumnSchema > table_columns = footer . getTable_columns ( ) ; for ( int i = 0 ; i < table_columns . size ( ) ; i ++ ) { columnSchemaList . add ( thriftColumnSchmeaToWrapperColumnSchema ( table_columns . get ( i ) ) ) ; } dataFileFooter . setColumnInTable ( columnSchemaList ) ; List < org . apache . carbondata . format . BlockletIndex > leaf_node_indices_Thrift = footer . getBlocklet_index_list ( ) ; List < BlockletIndex > blockletIndexList = new ArrayList < BlockletIndex > ( ) ; for ( int i = 0 ; i < leaf_node_indices_Thrift . size ( ) ; i ++ ) { BlockletIndex blockletIndex = getBlockletIndex ( leaf_node_indices_Thrift . get ( i ) ) ; blockletIndexList . add ( blockletIndex ) ; } List < org . apache . carbondata . format . BlockletInfo > leaf_node_infos_Thrift = footer . getBlocklet_info_list ( ) ; List < BlockletInfo > blockletInfoList = new ArrayList < BlockletInfo > ( ) ; for ( int i = 0 ; i < leaf_node_infos_Thrift . size ( ) ; i ++ ) { BlockletInfo blockletInfo = getBlockletInfo ( leaf_node_infos_Thrift . get ( i ) ) ; blockletInfo . setBlockletIndex ( blockletIndexList . get ( i ) ) ; blockletInfoList . add ( blockletInfo ) ; } dataFileFooter . setBlockletList ( blockletInfoList ) ; dataFileFooter . setBlockletIndex ( getBlockletIndexForDataFileFooter ( blockletIndexList ) ) ; } finally { if ( null != fileReader ) { fileReader . finish ( ) ; } } return dataFileFooter ; }
target:  Below method will be used to convert thrift file meta to wrapper file meta