use of org.apache.gora.cassandra.bean.Field in project gora by apache.
the class AvroSerializer method execute.
/**
* {@inheritDoc}
*
* @param dataStore
* @param query
* @return
*/
@Override
public Result execute(DataStore dataStore, Query query) throws GoraException {
try {
List<Object> objectArrayList = new ArrayList<>();
String[] fields = query.getFields();
if (fields != null) {
fields = (String[]) ArrayUtils.addAll(fields, mapping.getAllKeys());
} else {
fields = mapping.getAllFieldsIncludingKeys();
}
CassandraResultSet<K, T> cassandraResult = new CassandraResultSet<>(dataStore, query);
String cqlQuery = CassandraQueryFactory.getExecuteQuery(mapping, query, objectArrayList, fields);
ResultSet results;
SimpleStatement statement;
if (objectArrayList.size() == 0) {
statement = new SimpleStatement(cqlQuery);
} else {
statement = new SimpleStatement(cqlQuery, objectArrayList.toArray());
}
if (readConsistencyLevel != null) {
statement.setConsistencyLevel(ConsistencyLevel.valueOf(readConsistencyLevel));
}
results = client.getSession().execute(statement);
Iterator<Row> iterator = results.iterator();
ColumnDefinitions definitions = results.getColumnDefinitions();
T obj;
K keyObject;
CassandraKey cassandraKey = mapping.getCassandraKey();
while (iterator.hasNext()) {
AbstractGettableData row = (AbstractGettableData) iterator.next();
obj = cassandraDataStore.newPersistent();
keyObject = cassandraDataStore.newKey();
populateValuesToPersistent(row, definitions, obj, fields);
if (cassandraKey != null) {
populateValuesToPersistent(row, definitions, (PersistentBase) keyObject, cassandraKey.getFieldNames());
} else {
Field key = mapping.getInlinedDefinedPartitionKey();
keyObject = (K) getValue(row, definitions.getType(key.getColumnName()), key.getColumnName(), null);
}
cassandraResult.addResultElement(keyObject, obj);
}
return cassandraResult;
} catch (Exception e) {
throw new GoraException(e);
}
}
use of org.apache.gora.cassandra.bean.Field in project gora by apache.
the class AvroSerializer method populateValuesToPersistent.
/**
* This method wraps result set data in to DataEntry and creates a list of DataEntry.
*/
private void populateValuesToPersistent(AbstractGettableData row, ColumnDefinitions columnDefinitions, PersistentBase base, String[] fields) {
Object paramValue;
for (String fieldName : fields) {
Schema.Field avroField = base.getSchema().getField(fieldName);
Field field = mapping.getFieldFromFieldName(fieldName);
// to ignore unspecified fields in the mapping
if (field == null || avroField == null) {
continue;
}
Schema fieldSchema = avroField.schema();
String columnName = field.getColumnName();
paramValue = getValue(row, columnDefinitions.getType(columnName), columnName, fieldSchema);
Object value = AvroCassandraUtils.getAvroFieldValue(paramValue, fieldSchema);
base.put(avroField.pos(), value);
}
}
use of org.apache.gora.cassandra.bean.Field in project gora by apache.
the class CassandraMapping method getAllKeys.
/**
* This method return all the fields which involves with partition keys, Including composite Keys
* @return field Names
*/
public String[] getAllKeys() {
List<String> fieldNames = new ArrayList<>();
Field keyField = getInlinedDefinedPartitionKey();
if (cassandraKey != null) {
for (Field field : cassandraKey.getFieldList()) {
fieldNames.add(field.getFieldName());
}
} else {
fieldNames.add(keyField.getFieldName());
}
String[] fieldNameArray = new String[fieldNames.size()];
return fieldNames.toArray(fieldNameArray);
}
use of org.apache.gora.cassandra.bean.Field in project gora by apache.
the class CassandraMappingBuilder method processClass.
private void processClass(CassandraMapping cassandraMapping, Element classElement) {
String tableName = classElement.getAttributeValue("table");
cassandraMapping.setCoreName(tableName);
List classAttributes = classElement.getAttributes();
for (Object anAttributeList : classAttributes) {
Attribute attribute = (Attribute) anAttributeList;
String attributeName = attribute.getName();
String attributeValue = attribute.getValue();
cassandraMapping.addProperty(attributeName, attributeValue);
}
List<Element> fields = classElement.getChildren("field");
for (Element field : fields) {
Field cassandraField = new Field();
List fieldAttributes = field.getAttributes();
processAttributes(fieldAttributes, cassandraField);
cassandraMapping.addCassandraField(cassandraField);
}
}
Aggregations