content: package com.alibaba.datax.plugin.writer.otswriter.utils;
  
  import com.alibaba.datax.common.element.Column;
  import com.alibaba.datax.common.exception.DataXException;
  import com.alibaba.datax.plugin.writer.otswriter.model.OTSAttrColumn;
  import com.alibaba.datax.plugin.writer.otswriter.model.OTSErrorMessage;
  import com.alicloud.openservices.tablestore.model.PrimaryKeySchema;
  import com.aliyun.openservices.ots.model.ColumnValue;
  import com.aliyun.openservices.ots.model.PrimaryKeyValue;
  
  
  /**
   * 备注：datax提供的转换机制有如下限制,如下规则是不能转换的
   * 1. bool   -> binary
   * 2. binary -> long, double, bool
   * 3. double -> bool, binary
   * 4. long   -> binary
   */
  public class ColumnConversionOld {
      public static PrimaryKeyValue columnToPrimaryKeyValue(Column c, PrimaryKeySchema col) {
          try {
              switch (col.getType()) {
              case STRING:
                  return PrimaryKeyValue.fromString(c.asString());
              case INTEGER:
                  return PrimaryKeyValue.fromLong(c.asLong());
              default:
                  throw new IllegalArgumentException(String.format(OTSErrorMessage.UNSUPPORT_PARSE, col.getType(), "PrimaryKeyValue"));
              }
          } catch (DataXException e) {
              throw new IllegalArgumentException(String.format(
                      OTSErrorMessage.COLUMN_CONVERSION_ERROR, 
                      c.getType(), c.asString(), col.getType().toString()
                      ));
          }
      }
      
      public static ColumnValue columnToColumnValue(Column c, OTSAttrColumn col) {
          try {
              switch (col.getType()) {
              case STRING:
                  return ColumnValue.fromString(c.asString());
              case INTEGER:
                  return ColumnValue.fromLong(c.asLong());
              case BOOLEAN:
                  return ColumnValue.fromBoolean(c.asBoolean());
              case DOUBLE:
                  return ColumnValue.fromDouble(c.asDouble());
              case BINARY:
                  return ColumnValue.fromBinary(c.asBytes());
              default:
                  throw new IllegalArgumentException(String.format(OTSErrorMessage.UNSUPPORT_PARSE, col.getType(), "ColumnValue"));
              }
          } catch (DataXException e) {
              throw new IllegalArgumentException(String.format(
                      OTSErrorMessage.COLUMN_CONVERSION_ERROR, 
                      c.getType(), c.asString(), col.getType().toString()
                      ));
          }
      }
  }
  