com.datastax.driver.core.DataType#getName ( )源码实例Demo

下面列出了com.datastax.driver.core.DataType#getName ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: DataflowTemplates   文件: CassandraRowMapperFn.java
/**
 * Most primitivies are represented the same way in Beam and Cassandra however there are a few
 * that differ. This method converts the native representation of timestamps, uuids, varint, dates
 * and IPs to a format which works for the Beam Schema.
 *
 * <p>Dates and Timestamps are returned as DateTime objects whilst UUIDs are converted to Strings.
 * Varint is converted into BigDecimal. The rest simply pass through as they are.
 *
 * @param value The object value as retrieved from Cassandra.
 * @param typeName The Cassandra schema type.
 * @see org.apache.beam.sdk.schemas.Schema.FieldType
 * @return The corresponding representation that works in the Beam schema.
 */
private Object toBeamObject(Object value, DataType typeName) {
  if (typeName == null || typeName.getName() == null) {
    throw new UnsupportedOperationException(
        "Unspecified Cassandra data type, cannot convert to beam row primitive.");
  }
  switch (typeName.getName()) {
    case TIMESTAMP:
      return new DateTime(value);
    case UUID:
      return ((UUID) value).toString();
    case VARINT:
      return new BigDecimal((BigInteger) value);
    case TIMEUUID:
      return ((UUID) value).toString();
    case DATE:
      LocalDate ld = (LocalDate) value;
      return new DateTime(ld.getYear(), ld.getMonth(), ld.getDay(), 0, 0);
    case INET:
      return ((InetAddress) value).getHostAddress();
    default:
      return value;
  }
}
 
源代码2 项目: ingestion   文件: CassandraUtils.java
public static Object parseValue(final DataType type, final String value) {
  if (value == null) {
    return null;
  }
  switch (type.getName()) {
  case TEXT:
  case VARCHAR:
  case ASCII:
    return value;
  case INET:
    return type.parse("'" + value + "'");
  case INT:
  case VARINT:
  case BIGINT:
  case FLOAT:
  case DOUBLE:
  case DECIMAL:
  case BOOLEAN:
    return type.parse(value.replaceAll("\\s+", ""));
  default:
    return type.parse(value);
  }
}
 
private DataType.Name validateName(DataType dataType) {

        final DataType.Name name = dataType.getName();
        if (DataTypeHelper.isNumber(name)) {
            return name;
        }

        throw new IllegalArgumentException("Datatype " + dataType + " not a number");
    }
 
源代码4 项目: glowroot   文件: CassandraWriteMetrics.java
private static int getNumBytes(BoundStatement boundStatement, int i, DataType dataType) {
    switch (dataType.getName()) {
        case VARCHAR:
            String s = boundStatement.getString(i);
            return s == null ? 0 : s.length();
        case BLOB:
            ByteBuffer bb = boundStatement.getBytes(i);
            return bb == null ? 0 : bb.limit();
        default:
            return 0;
    }
}
 
DataType.Name checkType(int i, DataType.Name name1, DataType.Name name2) {
    DataType defined = getType(i);
    if (name1 != defined.getName() && name2 != defined.getName())
        throw new InvalidTypeException(String.format("Column %s is of type %s", getName(i), defined));

    return defined.getName();
}
 
DataType.Name checkType(int i, DataType.Name name1, DataType.Name name2, DataType.Name name3) {
    DataType defined = getType(i);
    if (name1 != defined.getName() && name2 != defined.getName() && name3 != defined.getName())
        throw new InvalidTypeException(String.format("Column %s is of type %s", getName(i), defined));

    return defined.getName();
}
 
private DataType.Name validateName(DataType dataType) {

        final DataType.Name name = dataType.getName();
        if (DataTypeHelper.isNumber(name)) {
            return name;
        }

        throw new IllegalArgumentException("Datatype " + dataType + " not a number");
    }
 
private DataType.Name validateName(DataType dataType) {

        final DataType.Name name = dataType.getName();
        if (DataTypeHelper.isNumber(name)) {
            return name;
        }

        throw new IllegalArgumentException("Datatype " + dataType + " not a number");
    }
 
源代码9 项目: micro-integrator   文件: CassandraDataHandler.java
/**
 * This method wraps result set data in to DataEntry and creates a list of DataEntry.
 *
 * @param tableName         Table Name
 * @param row               Row
 * @param columnDefinitions Column Definition
 * @return DataEntry
 * @throws ODataServiceFault
 */
private ODataEntry createDataEntryFromRow(String tableName, Row row, ColumnDefinitions columnDefinitions)
        throws ODataServiceFault {
    String paramValue;
    ODataEntry entry = new ODataEntry();
    //Creating a unique string to represent the
    try {
        for (int i = 0; i < columnDefinitions.size(); i++) {
            String columnName = columnDefinitions.getName(i);
            DataType columnType = columnDefinitions.getType(i);

            switch (columnType.getName()) {
                case ASCII:
                    paramValue = row.getString(i);
                    break;
                case BIGINT:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getLong(i));
                    break;
                case BLOB:
                    paramValue = this.base64EncodeByteBuffer(row.getBytes(i));
                    break;
                case BOOLEAN:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getBool(i));
                    break;
                case COUNTER:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getLong(i));
                    break;
                case DECIMAL:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getDecimal(i));
                    break;
                case DOUBLE:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getDouble(i));
                    break;
                case FLOAT:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getFloat(i));
                    break;
                case INET:
                    paramValue = row.getInet(i).toString();
                    break;
                case INT:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getInt(i));
                    break;
                case TEXT:
                    paramValue = row.getString(i);
                    break;
                case TIMESTAMP:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getDate(i));
                    break;
                case UUID:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getUUID(i));
                    break;
                case VARCHAR:
                    paramValue = row.getString(i);
                    break;
                case VARINT:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getVarint(i));
                    break;
                case TIMEUUID:
                    paramValue = row.isNull(i) ? null : ConverterUtil.convertToString(row.getUUID(i));
                    break;
                case LIST:
                    paramValue = row.isNull(i) ? null : Arrays.toString(row.getList(i, Object.class).toArray());
                    break;
                case SET:
                    paramValue = row.isNull(i) ? null : row.getSet(i, Object.class).toString();
                    break;
                case MAP:
                    paramValue = row.isNull(i) ? null : row.getMap(i, Object.class, Object.class).toString();
                    break;
                case UDT:
                    paramValue = row.isNull(i) ? null : row.getUDTValue(i).toString();
                    break;
                case TUPLE:
                    paramValue = row.isNull(i) ? null : row.getTupleValue(i).toString();
                    break;
                case CUSTOM:
                    paramValue = row.isNull(i) ? null : this.base64EncodeByteBuffer(row.getBytes(i));
                    break;
                default:
                    paramValue = row.getString(i);
                    break;
            }
            entry.addValue(columnName, paramValue);
        }
    } catch (DataServiceFault e) {
        throw new ODataServiceFault(e, "Error occurred when creating OData entry. :" + e.getMessage());
    }
    //Set E-Tag to the entity
    entry.addValue("ETag", ODataUtils.generateETag(this.configID, tableName, entry));
    return entry;
}
 
源代码10 项目: localization_nifi   文件: QueryCassandra.java
/**
 * Creates an Avro schema from the given result set. The metadata (column definitions, data types, etc.) is used
 * to determine a schema for Avro.
 *
 * @param rs The result set from which an Avro schema will be created
 * @return An Avro schema corresponding to the given result set's metadata
 * @throws IOException If an error occurs during schema discovery/building
 */
public static Schema createSchema(final ResultSet rs) throws IOException {
    final ColumnDefinitions columnDefinitions = rs.getColumnDefinitions();
    final int nrOfColumns = (columnDefinitions == null ? 0 : columnDefinitions.size());
    String tableName = "NiFi_Cassandra_Query_Record";
    if (nrOfColumns > 0) {
        String tableNameFromMeta = columnDefinitions.getTable(1);
        if (!StringUtils.isBlank(tableNameFromMeta)) {
            tableName = tableNameFromMeta;
        }
    }

    final SchemaBuilder.FieldAssembler<Schema> builder = SchemaBuilder.record(tableName).namespace("any.data").fields();
    if (columnDefinitions != null) {
        for (int i = 0; i < nrOfColumns; i++) {

            DataType dataType = columnDefinitions.getType(i);
            if (dataType == null) {
                throw new IllegalArgumentException("No data type for column[" + i + "] with name " + columnDefinitions.getName(i));
            }

            // Map types from Cassandra to Avro where possible
            if (dataType.isCollection()) {
                List<DataType> typeArguments = dataType.getTypeArguments();
                if (typeArguments == null || typeArguments.size() == 0) {
                    throw new IllegalArgumentException("Column[" + i + "] " + dataType.getName()
                            + " is a collection but no type arguments were specified!");
                }
                // Get the first type argument, to be used for lists and sets
                DataType firstArg = typeArguments.get(0);
                if (dataType.equals(DataType.set(firstArg))
                        || dataType.equals(DataType.list(firstArg))) {
                    builder.name(columnDefinitions.getName(i)).type().unionOf().nullBuilder().endNull().and().array()
                            .items(getUnionFieldType(getPrimitiveAvroTypeFromCassandraType(firstArg))).endUnion().noDefault();
                } else {
                    // Must be an n-arg collection like map
                    DataType secondArg = typeArguments.get(1);
                    if (dataType.equals(DataType.map(firstArg, secondArg))) {
                        builder.name(columnDefinitions.getName(i)).type().unionOf().nullBuilder().endNull().and().map().values(
                                getUnionFieldType(getPrimitiveAvroTypeFromCassandraType(secondArg))).endUnion().noDefault();
                    }
                }
            } else {
                builder.name(columnDefinitions.getName(i))
                        .type(getUnionFieldType(getPrimitiveAvroTypeFromCassandraType(dataType))).noDefault();
            }
        }
    }
    return builder.endRecord();
}
 
protected static Object getCassandraObject(Row row, int i, DataType dataType) {
    if (dataType.equals(DataType.blob())) {
        return row.getBytes(i);

    } else if (dataType.equals(DataType.varint()) || dataType.equals(DataType.decimal())) {
        // Avro can't handle BigDecimal and BigInteger as numbers - it will throw an
        // AvroRuntimeException such as: "Unknown datum type: java.math.BigDecimal: 38"
        return row.getObject(i).toString();

    } else if (dataType.equals(DataType.cboolean())) {
        return row.getBool(i);

    } else if (dataType.equals(DataType.cint())) {
        return row.getInt(i);

    } else if (dataType.equals(DataType.bigint())
            || dataType.equals(DataType.counter())) {
        return row.getLong(i);

    } else if (dataType.equals(DataType.ascii())
            || dataType.equals(DataType.text())
            || dataType.equals(DataType.varchar())) {
        return row.getString(i);

    } else if (dataType.equals(DataType.cfloat())) {
        return row.getFloat(i);

    } else if (dataType.equals(DataType.cdouble())) {
        return row.getDouble(i);

    } else if (dataType.equals(DataType.timestamp())) {
        return row.getTimestamp(i);

    } else if (dataType.equals(DataType.date())) {
        return row.getDate(i);

    } else if (dataType.equals(DataType.time())) {
        return row.getTime(i);

    } else if (dataType.isCollection()) {

        List<DataType> typeArguments = dataType.getTypeArguments();
        if (typeArguments == null || typeArguments.size() == 0) {
            throw new IllegalArgumentException("Column[" + i + "] " + dataType.getName()
                    + " is a collection but no type arguments were specified!");
        }
        // Get the first type argument, to be used for lists and sets (and the first in a map)
        DataType firstArg = typeArguments.get(0);
        TypeCodec firstCodec = codecRegistry.codecFor(firstArg);
        if (dataType.equals(DataType.set(firstArg))) {
            return row.getSet(i, firstCodec.getJavaType());
        } else if (dataType.equals(DataType.list(firstArg))) {
            return row.getList(i, firstCodec.getJavaType());
        } else {
            // Must be an n-arg collection like map
            DataType secondArg = typeArguments.get(1);
            TypeCodec secondCodec = codecRegistry.codecFor(secondArg);
            if (dataType.equals(DataType.map(firstArg, secondArg))) {
                return row.getMap(i, firstCodec.getJavaType(), secondCodec.getJavaType());
            }
        }

    } else {
        // The different types that we support are numbers (int, long, double, float),
        // as well as boolean values and Strings. Since Avro doesn't provide
        // timestamp types, we want to convert those to Strings. So we will cast anything other
        // than numbers or booleans to strings by using the toString() method.
        return row.getObject(i).toString();
    }
    return null;
}
 
@Override
public void activate(Context.OperatorContext context)
{
  com.datastax.driver.core.ResultSet rs
      = store.getSession().execute("select * from " + store.keyspace + "." + tablename);
  final ColumnDefinitions rsMetaData = rs.getColumnDefinitions();

  if (fieldInfos == null) {
    populateFieldInfosFromPojo(rsMetaData);
  }

  for (FieldInfo fieldInfo : getFieldInfos()) {
    // get the designated column's data type.
    final DataType type = rsMetaData.getType(fieldInfo.getColumnName());
    columnDataTypes.add(type);
    final Object getter;
    final String getterExpr = fieldInfo.getPojoFieldExpression();
    switch (type.getName()) {
      case ASCII:
      case TEXT:
      case VARCHAR:
        getter = PojoUtils.createGetter(pojoClass, getterExpr, String.class);
        break;
      case BOOLEAN:
        getter = PojoUtils.createGetterBoolean(pojoClass, getterExpr);
        break;
      case INT:
        getter = PojoUtils.createGetterInt(pojoClass, getterExpr);
        break;
      case BIGINT:
      case COUNTER:
        getter = PojoUtils.createGetterLong(pojoClass, getterExpr);
        break;
      case FLOAT:
        getter = PojoUtils.createGetterFloat(pojoClass, getterExpr);
        break;
      case DOUBLE:
        getter = PojoUtils.createGetterDouble(pojoClass, getterExpr);
        break;
      case DECIMAL:
        getter = PojoUtils.createGetter(pojoClass, getterExpr, BigDecimal.class);
        break;
      case SET:
        getter = PojoUtils.createGetter(pojoClass, getterExpr, Set.class);
        break;
      case MAP:
        getter = PojoUtils.createGetter(pojoClass, getterExpr, Map.class);
        break;
      case LIST:
        getter = PojoUtils.createGetter(pojoClass, getterExpr, List.class);
        break;
      case TIMESTAMP:
        getter = PojoUtils.createGetter(pojoClass, getterExpr, Date.class);
        break;
      case UUID:
        getter = PojoUtils.createGetter(pojoClass, getterExpr, UUID.class);
        break;
      default:
        getter = PojoUtils.createGetter(pojoClass, getterExpr, Object.class);
        break;
    }
    getters.add(getter);
  }
  super.activate(context);
}
 
@Override
@SuppressWarnings("unchecked")
protected Statement setStatementParameters(PreparedStatement updateCommand, Object tuple) throws DriverException
{
  final BoundStatement boundStmnt = new BoundStatement(updateCommand);
  final int size = columnDataTypes.size();
  for (int i = 0; i < size; i++) {
    final DataType type = columnDataTypes.get(i);
    switch (type.getName()) {
      case UUID:
        final UUID id = ((Getter<Object, UUID>)getters.get(i)).get(tuple);
        boundStmnt.setUUID(i, id);
        break;
      case ASCII:
      case VARCHAR:
      case TEXT:
        final String ascii = ((Getter<Object, String>)getters.get(i)).get(tuple);
        boundStmnt.setString(i, ascii);
        break;
      case BOOLEAN:
        final boolean bool = ((GetterBoolean<Object>)getters.get(i)).get(tuple);
        boundStmnt.setBool(i, bool);
        break;
      case INT:
        final int intValue = ((GetterInt<Object>)getters.get(i)).get(tuple);
        boundStmnt.setInt(i, intValue);
        break;
      case BIGINT:
      case COUNTER:
        final long longValue = ((GetterLong<Object>)getters.get(i)).get(tuple);
        boundStmnt.setLong(i, longValue);
        break;
      case FLOAT:
        final float floatValue = ((GetterFloat<Object>)getters.get(i)).get(tuple);
        boundStmnt.setFloat(i, floatValue);
        break;
      case DOUBLE:
        final double doubleValue = ((GetterDouble<Object>)getters.get(i)).get(tuple);
        boundStmnt.setDouble(i, doubleValue);
        break;
      case DECIMAL:
        final BigDecimal decimal = ((Getter<Object, BigDecimal>)getters.get(i)).get(tuple);
        boundStmnt.setDecimal(i, decimal);
        break;
      case SET:
        Set<?> set = ((Getter<Object, Set<?>>)getters.get(i)).get(tuple);
        boundStmnt.setSet(i, set);
        break;
      case MAP:
        final Map<?,?> map = ((Getter<Object, Map<?,?>>)getters.get(i)).get(tuple);
        boundStmnt.setMap(i, map);
        break;
      case LIST:
        final List<?> list = ((Getter<Object, List<?>>)getters.get(i)).get(tuple);
        boundStmnt.setList(i, list);
        break;
      case TIMESTAMP:
        final Date date = ((Getter<Object, Date>)getters.get(i)).get(tuple);
        boundStmnt.setDate(i, LocalDate.fromMillisSinceEpoch(date.getTime()));
        break;
      default:
        throw new RuntimeException("unsupported data type " + type.getName());
    }
  }
  return boundStmnt;
}
 
@Override
public void activate(OperatorContext context)
{
  Long keyToken;
  if (startRow != null) {
    if ((keyToken = fetchKeyTokenFromDB(startRow)) != null) {
      startRowToken = keyToken;
    }
  }

  com.datastax.driver.core.ResultSet rs = store.getSession().execute("select * from " + store.keyspace + "." + tablename + " LIMIT " + 1);
  ColumnDefinitions rsMetaData = rs.getColumnDefinitions();

  if (query.contains("%t")) {
    query = query.replace("%t", tablename);
  }
  if (query.contains("%p")) {
    query = query.replace("%p", primaryKeyColumn);
  }
  if (query.contains("%l")) {
    query = query.replace("%l", limit + "");
  }

  LOG.debug("query is {}", query);

  for (FieldInfo fieldInfo : fieldInfos) {
    // Get the designated column's data type.
    DataType type = rsMetaData.getType(fieldInfo.getColumnName());
    columnDataTypes.add(type);
    Object setter;
    final String setterExpr = fieldInfo.getPojoFieldExpression();
    switch (type.getName()) {
      case ASCII:
      case TEXT:
      case VARCHAR:
        setter = PojoUtils.createSetter(pojoClass, setterExpr, String.class);
        break;
      case BOOLEAN:
        setter = PojoUtils.createSetterBoolean(pojoClass, setterExpr);
        break;
      case INT:
        setter = PojoUtils.createSetterInt(pojoClass, setterExpr);
        break;
      case BIGINT:
      case COUNTER:
        setter = PojoUtils.createSetterLong(pojoClass, setterExpr);
        break;
      case FLOAT:
        setter = PojoUtils.createSetterFloat(pojoClass, setterExpr);
        break;
      case DOUBLE:
        setter = PojoUtils.createSetterDouble(pojoClass, setterExpr);
        break;
      case DECIMAL:
        setter = PojoUtils.createSetter(pojoClass, setterExpr, BigDecimal.class);
        break;
      case SET:
        setter = PojoUtils.createSetter(pojoClass, setterExpr, Set.class);
        break;
      case MAP:
        setter = PojoUtils.createSetter(pojoClass, setterExpr, Map.class);
        break;
      case LIST:
        setter = PojoUtils.createSetter(pojoClass, setterExpr, List.class);
        break;
      case TIMESTAMP:
        setter = PojoUtils.createSetter(pojoClass, setterExpr, Date.class);
        break;
      case UUID:
        setter = PojoUtils.createSetter(pojoClass, setterExpr, UUID.class);
        break;
      default:
        setter = PojoUtils.createSetter(pojoClass, setterExpr, Object.class);
        break;
    }
    setters.add(setter);
  }
}
 
源代码15 项目: attic-apex-malhar   文件: CassandraPojoUtils.java
/**
 * Resolves a getter that can be associated with the given field name in the Pojo matching to the given
 * data type of cassandra
 * @param tuplePayloadClass The tuple class that is used to build the getter from
 * @param getterExpr The name of the field representing the getter that needs to be generated
 * @param returnDataTypeOfGetter The Data type of the cassandra column
 * @param userDefinedTypesClass A map that can provide for a UDT class given a column name
 * @return The getter object that can be used to extract the value at runtime
 */
public static Object resolveGetterForField(Class tuplePayloadClass, String getterExpr,
    DataType returnDataTypeOfGetter, Map<String,Class> userDefinedTypesClass)
{
  Object getter = null;
  switch (returnDataTypeOfGetter.getName()) {
    case INT:
      getter = PojoUtils.createGetterInt(tuplePayloadClass, getterExpr);
      break;
    case BIGINT:
    case COUNTER:
      getter = PojoUtils.createGetterLong(tuplePayloadClass, getterExpr);
      break;
    case ASCII:
    case TEXT:
    case VARCHAR:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, String.class);
      break;
    case BOOLEAN:
      getter = PojoUtils.createGetterBoolean(tuplePayloadClass, getterExpr);
      break;
    case FLOAT:
      getter = PojoUtils.createGetterFloat(tuplePayloadClass, getterExpr);
      break;
    case DOUBLE:
      getter = PojoUtils.createGetterDouble(tuplePayloadClass, getterExpr);
      break;
    case DECIMAL:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, BigDecimal.class);
      break;
    case SET:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, Set.class);
      break;
    case MAP:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, Map.class);
      break;
    case LIST:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, List.class);
      break;
    case TIMESTAMP:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, Date.class);
      break;
    case UUID:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, UUID.class);
      break;
    case UDT:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, userDefinedTypesClass.get(getterExpr));
      break;
    default:
      getter = PojoUtils.createGetter(tuplePayloadClass, getterExpr, Object.class);
      break;
  }
  return getter;
}
 
源代码16 项目: cassandra-jdbc-wrapper   文件: ColumnDefinitions.java
void checkType(int i, DataType.Name name) {
    DataType defined = getType(i);
    if (name != defined.getName())
        throw new InvalidTypeException(String.format("Column %s is of type %s", getName(i), defined));
}
 
源代码17 项目: SimpleFlatMapper   文件: DataTypeHelper.java
public static Class<?> asJavaClass(DataType dataType) {
    DataType.Name name = dataType.getName();
    return asJavaClass(name);
}
 
private DataType.Name validateName(DataType dataType) {
    if (DataTypeHelper.isNumber(dataType)) {
        return dataType.getName();
    }
    throw new IllegalArgumentException("DataType " + dataType + "is not a number");
}
 
private DataType.Name validateName(DataType dataType) {

        final DataType.Name name = dataType.getName();

        if (DataTypeHelper.isNumber(name)) {
            return name;
        }

        throw new IllegalArgumentException("Datatype " + dataType + " not a number");
    }
 
private DataType.Name validateName(DataType dataType) {

        final DataType.Name name = dataType.getName();

        if (DataTypeHelper.isNumber(name)) {
            return name;
        }

        throw new IllegalArgumentException("Datatype " + dataType + " not a number");
    }