public InsertColumn factory(Field field) {
    if (ColumnUtil.INTANCE.isEnumField(field)) {
      return new EnumInsert();
    }
    if (ColumnUtil.INTANCE.isCustom(field)) {
      return new CustomInsert();
    }

    return new DefaultInsert();
  }
 @Override
 public Object getObject(Map<String, Definition> mapDefinition, Field field, Row row) {
   Integer value =
       (Integer)
           RelationShipJavaCassandra.INSTANCE.getObject(
               row, Name.INT, ColumnUtil.INTANCE.getColumnName(field));
   return field.getType().getEnumConstants()[value];
 }
 @Override
 public Object getObject(Map<String, Definition> mapDefinition, Field field, Row row) {
   return RelationShipJavaCassandra.INSTANCE.getObject(
       row,
       Name.LIST,
       ColumnUtil.INTANCE.getColumnName(field),
       ReflectionUtil.INSTANCE.getGenericType(field));
 }
  public ReturnValue factory(Field field) {
    if (ColumnUtil.INTANCE.isEnumField(field)) {
      return new EnumReturnValue();
    }
    if (ColumnUtil.INTANCE.isList(field)) {
      return new ListReturnValue();
    }
    if (ColumnUtil.INTANCE.isSet(field)) {
      return new SetReturnValue();
    }
    if (ColumnUtil.INTANCE.isMap(field)) {
      return new MapReturnValue();
    }
    if (ColumnUtil.INTANCE.isCustom(field)) {
      return new CustomReturnValue();
    }

    return new DefaultGetObject();
  }
 @Override
 public Object getObject(Map<String, Definition> mapDefinition, Field field, Row row) {
   ReflectionUtil.KeyValueClass keyValueClass =
       ReflectionUtil.INSTANCE.getGenericKeyValue(field);
   return RelationShipJavaCassandra.INSTANCE.getObject(
       row,
       Name.MAP,
       ColumnUtil.INTANCE.getColumnName(field),
       keyValueClass.getKeyClass(),
       keyValueClass.getValueClass());
 }
    @Override
    public Object getObject(Map<String, Definition> mapDefinition, Field field, Row row) {
      Definition column = mapDefinition.get(ColumnUtil.INTANCE.getColumnName(field).toLowerCase());
      ByteBuffer buffer =
          (ByteBuffer)
              RelationShipJavaCassandra.INSTANCE.getObject(
                  row, column.getType().getName(), column.getName());
      CustomData customData = field.getAnnotation(CustomData.class);
      Customizable customizable =
          Customizable.class.cast(ReflectionUtil.INSTANCE.newInstance(customData.classCustmo()));

      return customizable.write(buffer);
    }
 @Override
 public Object getObject(Map<String, Definition> mapDefinition, Field field, Row row) {
   Definition column = mapDefinition.get(ColumnUtil.INTANCE.getColumnName(field).toLowerCase());
   return RelationShipJavaCassandra.INSTANCE.getObject(
       row, column.getType().getName(), column.getName());
 }