public DataType convertToDataType()

in flink-connector-hbase-base/src/main/java/org/apache/flink/connector/hbase/util/HBaseTableSchema.java [261:299]


    public DataType convertToDataType() {
        String[] familyNames = getFamilyNames();
        if (rowKeyInfo != null) {
            String[] fieldNames = new String[familyNames.length + 1];
            DataType[] fieldTypes = new DataType[familyNames.length + 1];
            for (int i = 0; i < fieldNames.length; i++) {
                if (i == rowKeyInfo.rowKeyIndex) {
                    fieldNames[i] = rowKeyInfo.rowKeyName;
                    fieldTypes[i] = rowKeyInfo.rowKeyType;
                } else {
                    int familyIndex = i < rowKeyInfo.rowKeyIndex ? i : i - 1;
                    String family = familyNames[familyIndex];
                    fieldNames[i] = family;
                    fieldTypes[i] =
                            getRowDataType(
                                    getQualifierNames(family), getQualifierDataTypes(family));
                }
            }
            DataTypes.Field[] fields = new DataTypes.Field[fieldNames.length];
            for (int i = 0; i < fields.length; i++) {
                fields[i] = DataTypes.FIELD(fieldNames[i], fieldTypes[i]);
            }
            return DataTypes.ROW(fields);
        } else {
            String[] fieldNames = new String[familyNames.length];
            DataType[] fieldTypes = new DataType[familyNames.length];
            for (int i = 0; i < fieldNames.length; i++) {
                String family = familyNames[i];
                fieldNames[i] = family;
                fieldTypes[i] =
                        getRowDataType(getQualifierNames(family), getQualifierDataTypes(family));
            }
            DataTypes.Field[] fields = new DataTypes.Field[fieldNames.length];
            for (int i = 0; i < fields.length; i++) {
                fields[i] = DataTypes.FIELD(fieldNames[i], fieldTypes[i]);
            }
            return DataTypes.ROW(fields);
        }
    }