package water.parser.orc; import water.fvec.Vec; /** * Utilities to work with Orc schema. */ public final class OrcUtil { /** Return true if the given schema can be transformed * into h2o type. * * @param s orc field name in string * @return true if the schema can be transformed into H2O type */ public static boolean isSupportedSchema(String s) { switch (s.toLowerCase()) { case "boolean": case "bigint": // long // case "binary": // removed binary column type support for now case "char": case "date": case "decimal": case "double": case "float": case "int": case "smallint": case "string": case "timestamp": case "tinyint": case "varchar": case "enum": return true; default: return false; } } /** * Transform Orc column types into H2O type. * * @param s Orc data type * @return a byte representing H2O column type * @throws IllegalArgumentException if schema is not supported */ public static byte schemaToColumnType(String s) { switch (s.toLowerCase()) { case "boolean": case "smallint": case "tinyint": case "bigint": // FIXME: make sure this is fixed by Tomas. case "int": case "float": case "double": case "decimal": return Vec.T_NUM; case "timestamp": case "date": return Vec.T_TIME; case "enum": return Vec.T_CAT; case "string": case "varchar": // case "binary": // Removed binary column type support for now case "char": return Vec.T_STR; default: throw new IllegalArgumentException("Unsupported Orc schema type: " + s); } } }