package brickhouse.udf.collect; import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableBinaryObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableBooleanObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableByteObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableDoubleObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableFloatObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableIntObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableLongObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableShortObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableStringObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableTimestampObjectInspector; import java.sql.Timestamp; public abstract class CreateWithPrimitive { public static CreateWithPrimitive getCreate(PrimitiveObjectInspector oi) { if (oi instanceof SettableBooleanObjectInspector) { final SettableBooleanObjectInspector settableOI = (SettableBooleanObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((Boolean) o); } }; } else if (oi instanceof SettableByteObjectInspector) { final SettableByteObjectInspector settableOI = (SettableByteObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((Byte) o); } }; } else if (oi instanceof SettableShortObjectInspector) { final SettableShortObjectInspector settableOI = (SettableShortObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((Short) o); } }; } else if (oi instanceof SettableIntObjectInspector) { final SettableIntObjectInspector settableOI = (SettableIntObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((Integer) o); } }; } else if (oi instanceof SettableLongObjectInspector) { final SettableLongObjectInspector settableOI = (SettableLongObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((Long) o); } }; } else if (oi instanceof SettableFloatObjectInspector) { final SettableFloatObjectInspector settableOI = (SettableFloatObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((Float) o); } }; } else if (oi instanceof SettableDoubleObjectInspector) { final SettableDoubleObjectInspector settableOI = (SettableDoubleObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((Double) o); } }; } else if (oi instanceof SettableStringObjectInspector) { final SettableStringObjectInspector settableOI = (SettableStringObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((String) o); } }; } else if (oi instanceof SettableTimestampObjectInspector) { final SettableTimestampObjectInspector settableOI = (SettableTimestampObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((Timestamp) o); } }; } else if (oi instanceof SettableBinaryObjectInspector) { final SettableBinaryObjectInspector settableOI = (SettableBinaryObjectInspector) oi; return new CreateWithPrimitive() { @Override public Object create(Object o) { if (o == null) return null; return settableOI.create((byte[]) o); } }; } else { return null; } } public abstract Object create(Object primitive); }