Java 类com.datastax.driver.core.DataType 实例源码
项目:ats-framework
文件:CassandraDbProvider.java
/**
* Returns a map with column name as key and column date type as value.
*
* The value might be as simple as "Boolean" or more complex like
* - "Set|Boolean"
* - "List|String"
* - "Map|String|Integer"
* these are cases when the data type is a container of primitive data types.
*
* @param tableName
* @return
* @throws DbException
*/
public Map<String, String> getColumnInfo(
String tableName ) throws DbException {
connect();
ResultSet results = session.execute("SELECT * FROM " + this.dbName + "." + tableName + " LIMIT 1");
Map<String, String> columnInfo = new HashMap<String, String>();
for (Definition columnDefinition : results.getColumnDefinitions()) {
DataType dataType = columnDefinition.getType();
String dataTypeName = dataType.getName().name();
if ("Set".equalsIgnoreCase(dataTypeName)) {
dataTypeName = dataTypeName + "|" + dataType.getTypeArguments().get(0);
} else if ("List".equalsIgnoreCase(dataTypeName)) {
dataTypeName = dataTypeName + "|" + dataType.getTypeArguments().get(0);
} else if ("Map".equalsIgnoreCase(dataTypeName)) {
dataTypeName = dataTypeName + "|" + dataType.getTypeArguments().get(0) + "|"
+ dataType.getTypeArguments().get(1);
}
columnInfo.put(columnDefinition.getName(), dataTypeName);
}
return columnInfo;
}
项目:music
文件:MusicCore.java
public static String convertToCQLDataType(DataType type,Object valueObj){
String value ="";
switch (type.getName()) {
case UUID:
value = valueObj+"";
break;
case TEXT: case VARCHAR:
String valueString = valueObj+"";
valueString = valueString.replace("'", "''");
value = "'"+valueString+"'";
break;
case MAP:{
Map<String,Object> otMap = (Map<String,Object>)valueObj;
value = "{"+jsonMaptoSqlString(otMap, ",")+"}";
break;
}
default:
value = valueObj+"";
break;
}
return value;
}
项目:music
文件:MusicDataStore.java
public Object getColValue(Row row, String colName, DataType colType){
switch(colType.getName()){
case VARCHAR:
return row.getString(colName);
case UUID:
return row.getUUID(colName);
case VARINT:
return row.getVarint(colName);
case BIGINT:
return row.getLong(colName);
case INT:
return row.getInt(colName);
case FLOAT:
return row.getFloat(colName);
case DOUBLE:
return row.getDouble(colName);
case BOOLEAN:
return row.getBool(colName);
case MAP:
return row.getMap(colName, String.class, String.class);
default:
return null;
}
}
项目:music
文件:MusicDataStore.java
public static Object convertToActualDataType(DataType colType,Object valueObj){
String valueObjString = valueObj+"";
switch(colType.getName()){
case UUID:
return UUID.fromString(valueObjString);
case VARINT:
return BigInteger.valueOf(Long.parseLong(valueObjString));
case BIGINT:
return Long.parseLong(valueObjString);
case INT:
return Integer.parseInt(valueObjString);
case FLOAT:
return Float.parseFloat(valueObjString);
case DOUBLE:
return Double.parseDouble(valueObjString);
case BOOLEAN:
return Boolean.parseBoolean(valueObjString);
case MAP:
return (Map<String,Object>)valueObj;
default:
return valueObjString;
}
}
项目:music
文件:MusicClient.java
public boolean insertRow(String tablename, Map<String, Object> valuesMap, Map<String, String> consistencyInfo, JsonInsert insObj) throws Exception {
// Note: https://docs.datastax.com/en/cql/3.0/cql/cql_reference/insert_r.html
String[] parts = tablename.split("\\.");
KeyspaceMetadata ks = cluster.getMetadata().getKeyspace(parts[0]);
TableMetadata tableInfo = ks.getTable(parts[1]);
StringBuilder fields = new StringBuilder();
StringBuilder values = new StringBuilder();
String prefix = "";
for (String key : valuesMap.keySet()) {
fields.append(prefix).append(key);
Object valueObj = valuesMap.get(key);
DataType colType = tableInfo.getColumn(key).getType();
values.append(prefix).append(convertToSqlDataType(colType, valueObj));
prefix = ", ";
}
String suffix = getTTLSuffix(insObj);
String query = String.format("INSERT INTO %s (%s) VALUES (%s)%s;", tablename, fields.toString(), values.toString(), suffix);
LOG.debug(query);
String consistency = extractConsistencyInfo(tablename, consistencyInfo);
executeCreateQuery(query, consistency);
return false;
}
项目:music
文件:RestMusicDataAPI.java
private RowIdentifier getRowIdentifier(String keyspace,String tablename, MultivaluedMap<String, String> rowParams){
String rowIdString="";
int counter =0;
TableMetadata tableInfo = MusicCore.returnColumnMetadata(keyspace, tablename);
String primaryKeyValue="";
for (MultivaluedMap.Entry<String, List<String>> entry : rowParams.entrySet()){
String keyName = entry.getKey();
List<String> valueList = entry.getValue();
String indValue = valueList.get(0);
DataType colType = tableInfo.getColumn(entry.getKey()).getType();
String formattedValue = MusicCore.convertToCQLDataType(colType,indValue);
if(counter ==0)
primaryKeyValue = primaryKeyValue+indValue;
rowIdString = rowIdString + keyName +"="+ formattedValue;
if(counter!=rowParams.size()-1)
rowIdString = rowIdString+" AND ";
counter = counter +1;
}
return new RowIdentifier(primaryKeyValue, rowIdString);
}
项目:silverflash
文件:CassandraMessageStore.java
/**
* Build schema programmatically
* <p>
* DDL equivalent:
*
* <pre>
* CREATE TABLE messages (
* sessionId uuid,
* seqNo bigint,
* message blob,
* PRIMARY KEY (sessionId, seqNo ) );
* </pre>
*
* @throws StoreException if the store is not open
*
*/
public void buildSchema() throws StoreException {
if (session != null) {
// Appropriate for a local test only
session.execute(new SimpleStatement("CREATE KEYSPACE IF NOT EXISTS " + KEYSPACE_NAME
+ " WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }"));
System.out.format("Keyspace %s available\n", KEYSPACE_NAME);
Create create = SchemaBuilder.createTable(KEYSPACE_NAME, TABLE_NAME).ifNotExists()
.addPartitionKey(SESSION_ID_COLNAME, DataType.uuid())
.addClusteringColumn(SEQ_NO_COLNAME, DataType.bigint())
.addColumn(MESSAGE_COLNAME, DataType.blob());
ResultSet resultSet = session.execute(create);
System.out.format("Table %s available\n", TABLE_NAME);
} else {
throw new StoreException("Schema not created; store not open");
}
}
项目:dOOv
文件:CassandraQueryBuilderTest.java
private static DataType cqlType(FieldInfo info) {
if (String.class.equals(info.type())) {
return DataType.text();
} else if (Boolean.class.equals(info.type()) || Boolean.TYPE.equals(info.type())) {
return DataType.cboolean();
} else if (Long.class.equals(info.type()) || Long.TYPE.equals(info.type())) {
return DataType.cint();
} else if (Double.class.equals(info.type()) || Double.TYPE.equals(info.type())) {
return DataType.cint();
} else if (Float.class.equals(info.type()) || Float.TYPE.equals(info.type())) {
return DataType.cint();
} else if (Integer.class.equals(info.type()) || Integer.TYPE.equals(info.type())) {
return DataType.cint();
} else if (LocalDate.class.equals(info.type())) {
return DataType.date();
} else if (Enum.class.isAssignableFrom(info.type())) {
return DataType.set(DataType.text());
} else if (Collection.class.isAssignableFrom(info.type())) {
return DataType.set(DataType.text());
}
throw new IllegalArgumentException("unknown type " + info.type() + " for " + info.id());
}
项目:dOOv
文件:LiveCode.java
private static DataType cqlType(FieldInfo info) {
if (String.class.equals(info.type())) {
return text();
} else if (Boolean.class.equals(info.type()) || Boolean.TYPE.equals(info.type())) {
return DataType.cboolean();
} else if (Long.class.equals(info.type()) || Long.TYPE.equals(info.type())) {
return DataType.cint();
} else if (LocalDate.class.equals(info.type())) {
return DataType.date();
} else if (Enum.class.isAssignableFrom(info.type())) {
return DataType.set(text());
} else if (Collection.class.isAssignableFrom(info.type())) {
return DataType.set(text());
}
throw new IllegalArgumentException("unknown type " + info.type() + " for " + info.id());
}
项目:presto
文件:CassandraSession.java
private CassandraColumnHandle buildColumnHandle(ColumnMetadata columnMeta, boolean partitionKey, boolean clusteringKey, int ordinalPosition, boolean hidden)
{
CassandraType cassandraType = CassandraType.getCassandraType(columnMeta.getType().getName());
List<CassandraType> typeArguments = null;
if (cassandraType != null && cassandraType.getTypeArgumentSize() > 0) {
List<DataType> typeArgs = columnMeta.getType().getTypeArguments();
switch (cassandraType.getTypeArgumentSize()) {
case 1:
typeArguments = ImmutableList.of(CassandraType.getCassandraType(typeArgs.get(0).getName()));
break;
case 2:
typeArguments = ImmutableList.of(CassandraType.getCassandraType(typeArgs.get(0).getName()), CassandraType.getCassandraType(typeArgs.get(1).getName()));
break;
default:
throw new IllegalArgumentException("Invalid type arguments: " + typeArgs);
}
}
boolean indexed = columnMeta.getIndex() != null;
return new CassandraColumnHandle(connectorId, columnMeta.getName(), ordinalPosition, cassandraType, typeArguments, partitionKey, clusteringKey, indexed, hidden);
}
项目:exovert
文件:EntityGeneratorHelper.java
/**
* Handle getting the class names for parameterized types.
*
* @param type the cassandra data type to extract from
* @return the parameterized type result
*/
public static TypeResult getClassWithTypes(DataType type) {
ClassName outer = getRawType(type);
List<TypeName> generics = new ArrayList<>();
boolean hasFrozenType = false;
for(DataType genericType : type.getTypeArguments()) {
if(Udt.instance.isUdt(genericType)) {
generics.add(MetaData.getClassNameForUdt((UserType) genericType));
if(genericType.isFrozen()) {
hasFrozenType = true;
}
} else {
generics.add(getRawType(genericType).box());
}
}
return new TypeResult(ParameterizedTypeName.get(outer, generics.toArray(new TypeName[generics.size()])), hasFrozenType);
}
项目:exovert
文件:EntityGeneratorHelper.java
/**
* Get a setter spec for a entity field.
*
* @param field the field name
* @param type the cassandra field type
* @return the setter method spec
*/
public static MethodSpec getSetter(String field, DataType type) {
String methodRoot = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, field);
String paramName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, field);
MethodSpec.Builder spec;
if (type.getTypeArguments().size() == 0) {
if(Udt.instance.isUdt(type)) {
spec = MethodSpec.methodBuilder("set" + methodRoot).addParameter(MetaData.getClassNameForUdt((UserType) type), paramName);
} else {
spec = MethodSpec.methodBuilder("set" + methodRoot).addParameter(getRawType(type), paramName);
}
} else {
TypeResult result = getClassWithTypes(type);
spec = MethodSpec.methodBuilder("set" + methodRoot).addParameter(result.type, paramName);
}
spec.addModifiers(Modifier.PUBLIC).addStatement("this.$L = $L", paramName, paramName);
return spec.build();
}
项目:exovert
文件:EntityGeneratorHelper.java
/**
* Get a getter spec for a entity field.
*
* @param field the field name
* @param type the cassandra field type
* @return the getter method spec
*/
public static MethodSpec getGetter(String field, DataType type) {
String methodRoot = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, field);
String paramName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, field);
MethodSpec.Builder spec;
if (type.getTypeArguments().size() == 0) {
if(Udt.instance.isUdt(type)) {
spec = MethodSpec.methodBuilder("get" + methodRoot).returns(MetaData.getClassNameForUdt((UserType) type));
} else {
spec = MethodSpec.methodBuilder("get" + methodRoot).returns(getRawType(type));
}
} else {
TypeResult result = getClassWithTypes(type);
spec = MethodSpec.methodBuilder("get" + methodRoot).returns(result.type);
}
spec.addModifiers(Modifier.PUBLIC).addStatement("return $L", paramName);
return spec.build();
}
项目:ignite
文件:PojoField.java
/**
* Gets field value as an object having Cassandra compatible type.
* This it could be stored directly into Cassandra without any conversions.
*
* @param obj Object instance.
* @param serializer {@link org.apache.ignite.cache.store.cassandra.serializer.Serializer} to use.
* @return Object to store in Cassandra table column.
*/
public Object getValueFromObject(Object obj, Serializer serializer) {
Object val = accessor.getValue(obj);
if (val == null)
return null;
DataType.Name cassandraType = PropertyMappingHelper.getCassandraType(val.getClass());
if (cassandraType != null)
return val;
if (serializer == null) {
throw new IllegalStateException("Can't serialize value from object '" +
val.getClass().getName() + "' field '" + name + "', cause there is no BLOB serializer specified");
}
return serializer.serialize(val);
}
项目:cassandra-jdbc-wrapper
文件:CassandraMetadataResultSet.java
/**
* Spec says "database specific type name"; for Cassandra this means the AbstractType.
*/
public String getColumnTypeName(int column) throws SQLException
{
//checkIndex(column);
DataType type = null;
try {
if(currentRow!=null){
type = currentRow.getColumnDefinitions().getType(column-1);
}else{
type = driverResultSet.getColumnDefinitions().getType(column-1);
}
return type.toString();
} catch (Exception e) {
return DataType.varchar().toString();
}
}
项目:scylla-tools-java
文件:UDFunction.java
protected UDFunction(FunctionName name,
List<ColumnIdentifier> argNames,
List<AbstractType<?>> argTypes,
DataType[] argDataTypes,
AbstractType<?> returnType,
DataType returnDataType,
boolean calledOnNullInput,
String language,
String body)
{
super(name, argTypes, returnType);
assert new HashSet<>(argNames).size() == argNames.size() : "duplicate argument names";
this.argNames = argNames;
this.language = language;
this.body = body;
this.argCodecs = UDHelper.codecsFor(argDataTypes);
this.returnCodec = UDHelper.codecFor(returnDataType);
this.calledOnNullInput = calledOnNullInput;
}
项目:scylla-tools-java
文件:SchemaStatement.java
BoundStatement bindRow(Row row)
{
for (int i = 0 ; i < argumentIndex.length ; i++)
{
Object value = row.get(argumentIndex[i]);
if (definitions.getType(i).getName().equals(DataType.date().getName()))
{
// the java driver only accepts com.datastax.driver.core.LocalDate for CQL type "DATE"
value= LocalDate.fromDaysSinceEpoch((Integer) value);
}
bindBuffer[i] = value;
if (bindBuffer[i] == null && !spec.partitionGenerator.permitNulls(argumentIndex[i]))
throw new IllegalStateException();
}
return statement.bind(bindBuffer);
}
项目:deep-spark
文件:CellValidatorTest.java
public void testDataTypeMapInstantiation() {
DataType type = DataType.map(DataType.text(), DataType.bigint());
CellValidator cv = cellValidator(type);
assertNotNull(cv);
assertEquals(cv.getValidatorClassName(), MapType.class.getName());
assertNotNull(cv.getValidatorTypes());
assertEquals(cv.validatorKind(), Kind.MAP);
assertEquals(cv.getValidatorTypes().size(), 2);
Iterator<String> types = cv.getValidatorTypes().iterator();
assertEquals(types.next(), "text");
assertEquals(types.next(), "bigint");
assertEquals(DataType.Name.MAP, cv.getCqlTypeName());
try {
Collection<String> ctypes = cv.getValidatorTypes();
ctypes.add("test");
fail("Validator types collection must be inmutable");
} catch (Exception ex) {
// ok
}
// assertNotNull(cv.getAbstractType());
// assertEquals(cv.getAbstractType(), MapType.getInstance(UTF8Type.instance, LongType.instance));
}
项目: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);
}
}
项目:camel-cql
文件:CqlToken.java
/**
* Create a parameterized token
*
* @param sqlType
* @param key
* @param mode
* @param position
* @throws IllegalArgumentException
*/
public CqlToken(String cqlType, String key, int position)
throws IllegalArgumentException {
// convert the given cqlType to an enumerated value
this.cqlType = DataType.Name.valueOf(cqlType.toUpperCase());
// a tuple is a special case of a collection in that arbitrary types can
// be added to a tuple
if (this.cqlType == DataType.Name.TUPLE) {
this.collectionType = this.cqlType;
}
// the key, which always equals the value property, is used to id this
// token as a parameter field, as opposed to a token that represents a
// CQL keyword. A keyword token will have its key property set to null
this.key = key.toLowerCase();
this.value = this.key;
addPosition(position);
}
项目:hecuba
文件:HecubaObjectFactory.java
public HecubaClientManager<Long> getHecubaClientManagerWithLongKeys(CassandraParamsBean parameters,
HecubaConstants.CassandraClientImplementation cassandraManagerType) {
switch (cassandraManagerType) {
case ASTYANAX:
return new AstyanaxBasedHecubaClientManager<>(parameters,
com.netflix.astyanax.serializers.LongSerializer.get());
case HECTOR:
return new HectorBasedHecubaClientManager<>(parameters,
me.prettyprint.cassandra.serializers.LongSerializer.get());
case DATASTAX:
return new DataStaxBasedHecubaClientManager<>(parameters, DataType.bigint());
case DATASTAX_SHARED:
return new DataStaxBasedSharedHecubaClientManager<>(parameters, DataType.bigint());
default:
throw new RuntimeException("Unhandled CassandraManagerType: " + cassandraManagerType);
}
}
项目:SimpleFlatMapper
文件:Datastax3.java
@SuppressWarnings("unchecked")
@Test
public void testLocalDateSetter() throws Exception {
Setter<SettableByIndexData, Object> setter = DataTypeTest.getSetter((Class<Object>)localDateClass, (DataType) DataType.class.getMethod("date").invoke(null));
RecorderInvocationHandler recorder = new RecorderInvocationHandler();
SettableByIndexData settableByDataInstance = (SettableByIndexData) Proxy.newProxyInstance(getClass().getClassLoader(), new Class[] { SettableByIndexData.class }, recorder);
Object localDateInstance = localDateClass.getDeclaredMethod("fromMillisSinceEpoch", long.class).invoke(null, System.currentTimeMillis());
setter.set(settableByDataInstance, localDateInstance);
recorder.invokedOnce("setDate", 1, localDateInstance);
recorder.reset();
setter.set(settableByDataInstance, null);
recorder.invokedOnce("setToNull", 1);
}
项目:camel-cql
文件:CqlToken.java
/**
* Binds an object, which is provided by the calling application, to a
* BoundStatement.
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public void bindObject(Session session, BoundStatement bs, Object obj)
throws Exception {
LOG.trace("bindObject: entered with this type {}", obj.getClass()
.getName());
if (obj instanceof String) {
bindString(bs, (String) obj);
}
else if (obj instanceof Map) {
bindMap(bs, (Map) obj);
} else if (obj instanceof List) {
if (getCollectionType() == DataType.Name.TUPLE) {
bindTuple(session, bs, (List) obj);
} else {
bindList(bs, (List) obj);
}
} else if (obj instanceof Set) {
bindSet(bs, (Set) obj);
} else {
Class classZ = obj.getClass();
for (Integer pos : getPositions()) {
bs.set(pos, obj, classZ);
}
}
}
项目:jooby
文件:CassandraSessionStore.java
private static void createTableIfNotExists(final com.datastax.driver.core.Session session,
final String table, final Logger log) {
Create createTable = SchemaBuilder.createTable(table)
.addPartitionKey(ID, DataType.varchar())
.addColumn(CREATED_AT, DataType.timestamp())
.addColumn(ACCESSED_AT, DataType.timestamp())
.addColumn(SAVED_AT, DataType.timestamp())
.addColumn(ATTRIBUTES, DataType.map(DataType.varchar(), DataType.varchar()))
.ifNotExists();
Futures.addCallback(session.executeAsync(createTable), new FutureCallback<ResultSet>() {
@Override
public void onSuccess(final ResultSet result) {
log.debug("Session table successfully created");
}
@Override
public void onFailure(final Throwable x) {
log.error("Create session table resulted in exception", x);
}
});
}
项目:hecuba
文件:DataStaxBasedSharedHecubaClientManager.java
@SuppressWarnings("unchecked")
@Override
public List<K> retrieveKeysBySecondaryIndex(String columnName, String columnValue) {
final String query = "select * from " + secondaryIndexColumnFamily + " where "
+ secondaryIndexKeyColumn + " = ?";
CassandraResultSet<K, String> keysResultSet = read(query, DataType.ascii(), keyType,
ImmutableMap.of("*", keyType), getSecondaryIndexKey(columnName, columnValue));
List<K> keys = new ArrayList<>();
if (keysResultSet.hasResults()) {
for (String key : keysResultSet.getColumnNames()) {
if (keyType == DataType.bigint()) {
keys.add((K) NumberUtils.createLong(key));
} else {
keys.add((K) key);
}
}
return keys;
}
return null;
}
项目:ingestion
文件:TestCassandraTable.java
private void mockTableMetadata() {
final ColumnMetadata idColumn = mock(ColumnMetadata.class);
when(idColumn.getName()).thenReturn("id");
when(idColumn.getType()).thenReturn(DataType.cint());
final ColumnMetadata textColumn = mock(ColumnMetadata.class);
when(textColumn.getName()).thenReturn("text_col");
when(textColumn.getType()).thenReturn(DataType.text());
final KeyspaceMetadata keyspaceMetadata = mock(KeyspaceMetadata.class);
when(keyspaceMetadata.getName()).thenReturn("my_keyspace");
when(tableMetadata.getName()).thenReturn("my_table");
when(tableMetadata.getColumns()).thenReturn(ImmutableList.of(idColumn, textColumn));
when(tableMetadata.getKeyspace()).thenReturn(keyspaceMetadata);
when(tableMetadata.getPrimaryKey()).thenReturn(ImmutableList.of(idColumn));
}
项目:Troilus
文件:RecordImpl.java
@Override
public <K, V> ImmutableMap<K, V> getMap(String name, Class<K> keysClass, Class<V> valuesClass) {
if (isNull(name)) {
return ImmutableMap.of();
}
final DataType datatype = ctx.getCatalog().getColumnMetadata(tablename, name).getType();
if (UDTValueMapper.isBuildInType(datatype)) {
return ImmutableMap.copyOf(getRow().getMap(name, keysClass, valuesClass));
} else {
if (UDTValueMapper.isBuildInType(datatype.getTypeArguments().get(0))) {
return ctx.getUDTValueMapper().fromUdtValues(datatype.getTypeArguments().get(0), datatype.getTypeArguments().get(1), ImmutableMap.copyOf(getRow().getMap(name, keysClass, UDTValue.class)), keysClass, valuesClass);
} else if (UDTValueMapper.isBuildInType(datatype.getTypeArguments().get(1))) {
return ctx.getUDTValueMapper().fromUdtValues(datatype.getTypeArguments().get(0), datatype.getTypeArguments().get(1), ImmutableMap.copyOf(getRow().getMap(name, UDTValue.class, valuesClass)), keysClass, valuesClass);
} else {
return ctx.getUDTValueMapper().fromUdtValues(datatype.getTypeArguments().get(0), datatype.getTypeArguments().get(1), ImmutableMap.copyOf(getRow().getMap(name, UDTValue.class, UDTValue.class)), keysClass, valuesClass);
}
}
}
项目:hecuba
文件:HecubaObjectFactory.java
public HecubaClientManager<String> getHecubaClientManagerWithStringKeys(CassandraParamsBean parameters,
HecubaConstants.CassandraClientImplementation cassandraManagerType) {
switch (cassandraManagerType) {
case ASTYANAX:
return new AstyanaxBasedHecubaClientManager<String>(parameters,
com.netflix.astyanax.serializers.StringSerializer.get());
case HECTOR:
return new HectorBasedHecubaClientManager<String>(parameters,
me.prettyprint.cassandra.serializers.StringSerializer.get());
case DATASTAX:
return new DataStaxBasedHecubaClientManager<>(parameters, DataType.text());
case DATASTAX_SHARED:
return new DataStaxBasedSharedHecubaClientManager<>(parameters, DataType.text());
default:
throw new RuntimeException("Unhandled CassandraManagerType: " + cassandraManagerType);
}
}
项目:calcite
文件:CassandraEnumerator.java
/** Get a field for the current row from the underlying object.
*
* @param index Index of the field within the Row object
* @param typeName Type of the field in this row
*/
private Object currentRowField(int index, SqlTypeName typeName) {
DataType type = current.getColumnDefinitions().getType(index);
if (type == DataType.ascii() || type == DataType.text() || type == DataType.varchar()) {
return current.getString(index);
} else if (type == DataType.cint() || type == DataType.varint()) {
return current.getInt(index);
} else if (type == DataType.bigint()) {
return current.getLong(index);
} else if (type == DataType.cdouble()) {
return current.getDouble(index);
} else if (type == DataType.cfloat()) {
return current.getFloat(index);
} else if (type == DataType.uuid() || type == DataType.timeuuid()) {
return current.getUUID(index).toString();
} else {
return null;
}
}
项目:deep-spark
文件:CassandraUtils.java
/**
* Returns the partition key related to a given {@link Cells}.
*
* @param cells {@link Cells} from Cassandra to extract the partition key.
* @param keyValidator Cassandra key type.
* @param numberOfKeys Number of keys.
* @return Partition key.
*/
public static ByteBuffer getPartitionKey(Cells cells, AbstractType<?> keyValidator, int numberOfKeys) {
ByteBuffer partitionKey;
if (keyValidator instanceof CompositeType) {
ByteBuffer[] keys = new ByteBuffer[numberOfKeys];
for (int i = 0; i < cells.size(); i++) {
Cell c = cells.getCellByIdx(i);
if (c.isKey()) {
keys[i] = DataType.serializeValue(c.getValue(), CassandraDeepJobConfig.PROTOCOL_VERSION);
}
}
partitionKey = CompositeType.build(keys);
} else {
Cell cell = cells.getCellByIdx(0);
partitionKey = DataType.serializeValue(cell.getValue(), CassandraDeepJobConfig.PROTOCOL_VERSION);
}
return partitionKey;
}
项目:state-channels
文件:CassandraConfiguration.java
private Cluster doCreateCluster(CassandraProperties properties) {
Cluster cluster = Cluster.builder()
.withClusterName(properties.getCluster())
.withPort(properties.getPort())
.addContactPoints(properties.getContactPoints())
.withTimestampGenerator(getTimestampGenerator())
.withPoolingOptions(
//TODO some default options - move to config
new PoolingOptions()
.setConnectionsPerHost(HostDistance.LOCAL, 4, 4)
.setConnectionsPerHost(HostDistance.REMOTE, 2, 2)
.setMaxRequestsPerConnection(HostDistance.LOCAL, 1024)
.setMaxRequestsPerConnection(HostDistance.REMOTE, 256)
)
.build();
//almost all queries are idempotent except counter updates, so it's easier to mark them as idempotent
cluster.getConfiguration().getQueryOptions().setDefaultIdempotence(true);
CodecRegistry codecRegistry = cluster.getConfiguration().getCodecRegistry();
TupleType tupleType = cluster.getMetadata()
.newTupleType(DataType.timestamp(), DataType.varchar());
codecRegistry.register(new ZonedDateTimeCodec(tupleType));
QueryLogger queryLogger = QueryLogger.builder()
.withConstantThreshold(100)
.withMaxQueryStringLength(200)
.build();
cluster.register(queryLogger);
return cluster;
}
项目:pentaho-cassandra-plugin
文件:Utils.java
public static int convertDataType(DataType type) {
switch (type.getName()) {
case SMALLINT:
case INT:
case BIGINT:
case COUNTER:
case TIME:
return ValueMetaInterface.TYPE_INTEGER; // 5 > java.lang.Long
case ASCII:
case TEXT:
case VARCHAR:
case UUID:
case TIMEUUID:
return ValueMetaInterface.TYPE_STRING; // 2 > java.lang.String
case INET:
return ValueMetaInterface.TYPE_INET; // 10 >
case BOOLEAN:
return ValueMetaInterface.TYPE_BOOLEAN; // 4 > java.lang.Boolean
case DECIMAL:
case FLOAT:
case DOUBLE:
return ValueMetaInterface.TYPE_NUMBER; // 1 > java.lang.Double
case VARINT:
return ValueMetaInterface.TYPE_BIGNUMBER; // 6 > java.math.BigDecimal
case TIMESTAMP:
return ValueMetaInterface.TYPE_DATE; // 3 > java.util.Date
case BLOB:
return ValueMetaInterface.TYPE_BINARY; // 8 > java.lang.byte[]
case LIST:
case MAP:
case SET:
return ValueMetaInterface.TYPE_SERIALIZABLE; // 0
default:
return ValueMetaInterface.TYPE_STRING;
}
}
项目:music
文件:MusicCore.java
private static void syncQuorum(String key){
logger.info("Performing sync operation---");
String[] splitString = key.split("\\.");
String keyspaceName = splitString[0];
String tableName = splitString[1];
String primaryKeyValue = splitString[2];
//get the primary key d
TableMetadata tableInfo = returnColumnMetadata(keyspaceName, tableName);
String primaryKeyName = tableInfo.getPrimaryKey().get(0).getName();//we only support single primary key
DataType primaryKeyType = tableInfo.getPrimaryKey().get(0).getType();
String cqlFormattedPrimaryKeyValue = convertToCQLDataType(primaryKeyType, primaryKeyValue);
//get the row of data from a quorum
String selectQuery = "SELECT * FROM "+keyspaceName+"."+tableName+ " WHERE "+primaryKeyName+"="+cqlFormattedPrimaryKeyValue+";";
ResultSet results = getDSHandle().executeCriticalGet(selectQuery);
//write it back to a quorum
Row row = results.one();
ColumnDefinitions colInfo = row.getColumnDefinitions();
int totalColumns = colInfo.size();
int counter =1;
String fieldValueString="";
for (Definition definition : colInfo){
String colName = definition.getName();
if(colName.equals(primaryKeyName))
continue;
DataType colType = definition.getType();
Object valueObj = getDSHandle().getColValue(row, colName, colType);
String valueString = convertToCQLDataType(colType,valueObj);
fieldValueString = fieldValueString+ colName+"="+valueString;
if(counter!=(totalColumns-1))
fieldValueString = fieldValueString+",";
counter = counter +1;
}
String updateQuery = "UPDATE "+keyspaceName+"."+tableName+" SET "+fieldValueString+" WHERE "+primaryKeyName+"="+cqlFormattedPrimaryKeyValue+";";
getDSHandle().executePut(updateQuery, "critical");
}
项目:music
文件:MusicDataStore.java
public boolean doesRowSatisfyCondition(Row row, Map<String, Object> condition){
ColumnDefinitions colInfo = row.getColumnDefinitions();
for (Map.Entry<String, Object> entry : condition.entrySet()){
String colName = entry.getKey();
DataType colType = colInfo.getType(colName);
Object columnValue = getColValue(row, colName, colType);
Object conditionValue = convertToActualDataType(colType, entry.getValue());
if(columnValue.equals(conditionValue) == false)
return false;
}
return true;
}
项目:music
文件:MusicClient.java
private Object readRow(final Row row, final String name, final DataType colType) {
switch (colType.getName()) {
case BIGINT:
return row.getLong(name);
case BOOLEAN:
return row.getBool(name);
case DOUBLE:
return row.getDouble(name);
case FLOAT:
return row.getFloat(name);
case INT:
return row.getInt(name);
case MAP:
return row.getMap(name, String.class, String.class);
case UUID:
return row.getUUID(name);
case TEXT:
case VARCHAR:
return row.getString(name);
case VARINT:
return row.getVarint(name);
// These are not supported right now....
// ASCII
// BLOB
// COUNTER
// CUSTOM
// DECIMAL
// INET
// LIST
// SET
// TIMESTAMP
// TIMEUUID
// TUPLE
// UDT
default:
return null;
}
}
项目:music
文件:MusicClient.java
private String convertToSqlDataType(DataType type, Object valueObj) {
switch (type.getName()) {
case TEXT:
String t = valueObj.toString();
t = t.replaceAll("'", "''");
return "'" + t + "'";
case MAP:
@SuppressWarnings("unchecked")
Map<String,Object> otMap = (Map<String,Object>) valueObj;
return "{" + jsonMaptoSqlString(otMap, ",") + "}";
default:
case UUID:
return valueObj.toString();
}
}
项目:emodb
文件:CQLStashTableDAO.java
private void ensureStashTokenRangeTableExists() {
if (!_verifiedStashTokenRangeTableExists) {
synchronized(this) {
if (!_verifiedStashTokenRangeTableExists) {
// Primary key is ((stash_id, data_center), placement, range_token, is_start_token).
// Note that Cassandra performs unsigned byte comparison for "range_token" and sorts False before
// True for "is_start_token". The latter is necessary because it sorts two tables with
// adjacent UUIDs correctly, returning the exclusive "to" token for the previous table before the
// inclusive "from" token for the next table.
_placementCache.get(_systemTablePlacement)
.getKeyspace()
.getCqlSession()
.execute(SchemaBuilder.createTable(STASH_TOKEN_RANGE_TABLE)
.ifNotExists()
.addPartitionKey(STASH_ID_COLUMN, DataType.text())
.addPartitionKey(DATA_CENTER_COLUMN, DataType.text())
.addClusteringColumn(PLACEMENT_COLUMN, DataType.text())
.addClusteringColumn(RANGE_TOKEN_COLUMN, DataType.blob())
.addClusteringColumn(IS_START_TOKEN_COLUMN, DataType.cboolean())
.addColumn(TABLE_JSON_COLUMN, DataType.text())
.withOptions()
// The following cluster orders should be the defaults but for clarity let's be explicit
.clusteringOrder(PLACEMENT_COLUMN, SchemaBuilder.Direction.ASC)
.clusteringOrder(RANGE_TOKEN_COLUMN, SchemaBuilder.Direction.ASC)
.clusteringOrder(IS_START_TOKEN_COLUMN, SchemaBuilder.Direction.ASC)
.compactStorage()
.defaultTimeToLive(TTL));
_verifiedStashTokenRangeTableExists = true;
}
}
}
}
项目:apex-malhar
文件:CassandraPOJOInputOperator.java
public CassandraPOJOInputOperator()
{
super();
columnDataTypes = new ArrayList<DataType>();
setters = new ArrayList<Object>();
this.store = new CassandraStore();
}
项目:apex-malhar
文件:AbstractUpsertOutputOperator.java
/**
* Generates a Boundstatement that can be executed for the given incoming tuple. This boundstatement is then
* executed as a command
* @param ps The prepared statement that was shortlisted to execute the given tuple
* @param tuple The tuple that represents the current execution context
* @param setNulls This represents the value whether the columns in the prepared statement need to be ignored or
* considered
* @return The boundstatement appropriately built
*/
@SuppressWarnings(value = "unchecked")
private BoundStatement processPayloadForExecution(final PreparedStatement ps, final UpsertExecutionContext tuple,
final boolean setNulls)
{
BoundStatement boundStatement = ps.bind();
Object pojoPayload = tuple.getPayload();
for (String cassandraColName : getters.keySet()) {
DataType dataType = columnDefinitions.get(cassandraColName);
CassandraPojoUtils.populateBoundStatementWithValue(boundStatement,getters,dataType,cassandraColName,
pojoPayload,setNulls,codecsForCassandraColumnNames);
}
return boundStatement;
}
项目:apex-malhar
文件:CassandraPreparedStatementGenerator.java
public CassandraPreparedStatementGenerator(Set<String> pkColumnNames, Set<String> counterColumns,
Set<String> listColumns, Set<String> mapColumns, Set<String> setColumns,
Map<String, DataType> columnDefinitions)
{
this.pkColumnNames = pkColumnNames;
this.counterColumns = counterColumns;
this.listColumns = listColumns;
this.mapColumns = mapColumns;
this.setColumns = setColumns;
this.columnDefinitions = columnDefinitions;
}