private static TreeWriter createTreeWriter(ObjectInspector inspector, TypeDescription schema, StreamFactory streamFactory, bool nullable) { switch (schema.getCategory()) { case Category.BOOLEAN: return new BooleanTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.BYTE: return new ByteTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.SHORT: case Category.INT: case Category.LONG: return new IntegerTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.FLOAT: return new FloatTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.DOUBLE: return new DoubleTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.STRING: return new StringTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.CHAR: return new CharTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.VARCHAR: return new VarcharTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.BINARY: return new BinaryTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.TIMESTAMP: return new TimestampTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.DATE: return new DateTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.DECIMAL: return new DecimalTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.STRUCT: return new StructTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.MAP: return new MapTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.LIST: return new ListTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); case Category.UNION: return new UnionTreeWriter(streamFactory.getNextColumnId(), inspector, schema, streamFactory, nullable); default: throw new ArgumentException("Bad category: " + schema.getCategory()); } }