/** * Builds set clause for a given field. * * @param m * the m * @param builder * the builder * @param property * the property * @param value * the value */ public void buildSetClause(EntityMetadata m, StringBuilder builder, String property, Object value) { builder = ensureCase(builder, property, false); builder.append(EQ_CLAUSE); if (m.isCounterColumnType()) { builder = ensureCase(builder, property, false); builder.append(INCR_COUNTER); builder.append(value); } else { appendValue(builder, value.getClass(), value, false, false); } builder.append(COMMA_STR); }
/** * Gets the persist queries. * * @param entityMetadata * the entity metadata * @param entity * the entity * @param conn * the conn * @param rlHolders * the rl holders * @param ttlColumns * the ttl columns * @return the persist queries */ protected List<String> getPersistQueries(EntityMetadata entityMetadata, Object entity, org.apache.cassandra.thrift.Cassandra.Client conn, List<RelationHolder> rlHolders, Object ttlColumns) { List<String> queries; if (entityMetadata.isCounterColumnType()) { queries = createUpdateQueryForCounter(entityMetadata, entity, conn, rlHolders); } else { queries = createInsertQuery(entityMetadata, entity, conn, rlHolders, ttlColumns); } return queries; }
/** * Checks whether Inverted indexing is applicable for a given entity whose * metadata is passed as parameter * * @param m * @return */ public static boolean isInvertedIndexingApplicable(EntityMetadata m, boolean useSecondryIndex) { boolean invertedIndexingApplicable = useSecondryIndex && CassandraPropertyReader.csmd.isInvertedIndexingEnabled(m.getSchema()) && m.getType().isSuperColumnFamilyMetadata() && !m.isCounterColumnType(); return invertedIndexingApplicable; }
/** * Gets the column value. * * @param m * the m * @param e * the e * @param attribute * the attribute * @return the column value */ private Object getColumnValue(EntityMetadata m, Object e, Attribute attribute) { Field field = (Field) ((Attribute) attribute).getJavaMember(); Object value; if (!m.isCounterColumnType()) { value = getThriftColumnValue(e, attribute); } else { value = PropertyAccessorHelper.getString(e, field); } return value; }
/** * Checks whether a given JPA DML query is convertible to CQL. * * @param kunderaQuery * the kundera query * @return true, if is query convertible to cql */ private boolean isQueryConvertibleToCQL(KunderaQuery kunderaQuery) { EntityMetadata m = kunderaQuery.getEntityMetadata(); if (kunderaQuery.isUpdateClause() && m.isCounterColumnType()) return false; List<String> opsNotAllowed = Arrays.asList(new String[] { ">", "<", ">=", "<=" }); boolean result = false; if (!kunderaQuery.getFilterClauseQueue().isEmpty()) { String idColumn = ((AbstractAttribute) m.getIdAttribute()).getJPAColumnName(); for (Object o : kunderaQuery.getFilterClauseQueue()) { if (o instanceof FilterClause) { FilterClause filterClause = (FilterClause) o; if (!idColumn.equals(filterClause.getProperty()) || opsNotAllowed.contains(filterClause.getCondition())) { result = false; break; } result = true; } } } return result; }
tr.setId(id); tr.setColumnFamilyName(m.getTableName()); tr = dataGenerator.translateToThriftRow(data, m.isCounterColumnType(), m.getType(), tr);
/** * Populate entity from slice. * * @param m the m * @param relationNames the relation names * @param isWrapReq the is wrap req * @param e the e * @param columnOrSuperColumnsFromRow the column or super columns from row * @return the object * @throws CharacterCodingException the character coding exception */ private Object populateEntityFromSlice(EntityMetadata m, List<String> relationNames, boolean isWrapReq, Object e, Map<ByteBuffer, List<ColumnOrSuperColumn>> columnOrSuperColumnsFromRow) throws CharacterCodingException { ThriftDataResultHelper dataGenerator = new ThriftDataResultHelper(); for (ByteBuffer key : columnOrSuperColumnsFromRow.keySet()) { Object id = PropertyAccessorHelper.getObject(m.getIdAttribute().getJavaType(), key.array()); ThriftRow tr = new ThriftRow(); tr.setColumnFamilyName(m.getTableName()); tr.setId(id); tr = dataGenerator.translateToThriftRow(columnOrSuperColumnsFromRow, m.isCounterColumnType(), m.getType(), tr); e = populateEntity(tr, m, e, relationNames, isWrapReq); } return e; } }
tr.setColumnFamilyName(tableName); tr = thriftTranslator.translateToThriftRow(thriftColumnOrSuperColumns, m.isCounterColumnType(), m.getType(), tr);
if (isUpdate && entityMetadata.isCounterColumnType()) { log.warn("Invalid operation! {} is not possible over counter column of entity {}.", "Merge", entityMetadata.getEntityClazz()); if (entityMetadata.isCounterColumnType()) { List<CounterColumn> thriftCounterColumns = tf.getCounterColumns(); List<CounterSuperColumn> thriftCounterSuperColumns = tf.getCounterSuperColumns();
if (metadata.isCounterColumnType()) { CounterColumn col = populateCounterFkey(linkName, linkValue); tf.addCounterColumn(col); if (metadata.isCounterColumnType()) { CounterSuperColumn counterSuperColumn = new CounterSuperColumn(); counterSuperColumn.setName(linkName.getBytes());
keyRange.setEnd_key(ByteBufferUtil.EMPTY_BYTE_BUFFER); if (m.isCounterColumnType())
+ Constants.EMBEDDED_COLUMN_NAME_DELIMITER + count; if (m.isCounterColumnType()) if (m.isCounterColumnType())
@Test public void testEmbeddedCollection() { EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata( ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(), KunderaUser.class); Assert.assertNotNull(entityMetadata); Assert.assertTrue(entityMetadata.getIndexProperties().isEmpty()); Assert.assertEquals(EntityMetadata.Type.SUPER_COLUMN_FAMILY, entityMetadata.getType()); Assert.assertNotNull(entityMetadata.toString()); entityMetadata.setCounterColumnType(false); Assert.assertFalse(entityMetadata.isCounterColumnType()); }
if (metadata.isCounterColumnType())
if (metadata.isCounterColumnType())