package org.apache.hadoop.hive.kafka;

import org.apache.avro.Schema;
import org.apache.hadoop.hive.serde2.avro.TypeInfoToSchema;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class AvroSchemaGenerator {
  private TypeInfoToSchema typeInfoToSchema;

  public AvroSchemaGenerator() {
    this.typeInfoToSchema = new TypeInfoToSchema();
  }

  public Schema getSchema(String columnNamesStr, String columnTypesStr,
                          String columnCommentsStr, String namespace, String name,
                          String doc) {
    List<String> columnNames = Arrays.asList(columnNamesStr.split(","));
    List<TypeInfo> columnTypes = TypeInfoUtils.getTypeInfosFromTypeString(columnTypesStr);
    List<String> columnComments;
    if (columnCommentsStr.isEmpty()) {
      columnComments = new ArrayList<String>();
    } else {
      columnComments = Arrays.asList(columnCommentsStr.split(","));
    }

    return typeInfoToSchema.convert(columnNames, columnTypes, columnComments, namespace, name, doc);
  }
}