(MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit()); String query = appMetadata.getQuery(getJPAQuery()); boolean isNative = kunderaQuery.isNative(); m.getRelationNames(), isNative, query != null ? query : getJPAQuery()); } else if (!isNative && ((CassandraClientBase) client).isCql3Enabled(m)) { ls = ((CassandraClientBase) client).executeQuery(m.getEntityClazz(), m.getRelationNames(), isNative, onQueryOverCQL3(m, client, metaModel, m.getRelationNames())); } else { ls = populateUsingLucene(m, client, null, getKunderaQuery().getResult()); Map<Boolean, List<IndexClause>> ixClause = MetadataUtils.useSecondryIndex(((ClientBase) client).getClientMetadata()) ? prepareIndexClause(m, useInvertedIndex) : null; if (useInvertedIndex && !getKunderaQuery().getFilterClauseQueue().isEmpty()) { ls = ((CassandraEntityReader) getReader()).readFromIndexTable(m, client, ixClause); } else { ((CassandraEntityReader) getReader()).setConditions(ixClause); ls = reader.populateRelation(m, client, isSingleResult ? 1 : this.maxResult); return setRelationEntities(ls, client, m);
EntityMetadata m = getEntityMetadata(); Client client = m != null ? persistenceDelegeator.getClient(m) : persistenceDelegeator.getClient(kunderaQuery.getPersistenceUnit()); ApplicationMetadata appMetadata = kunderaMetadata.getApplicationMetadata(); String query = appMetadata.getQuery(getJPAQuery()); query != null ? query : getJPAQuery()); } else if (kunderaQuery.isDeleteUpdate()) { if (!isQueryConvertibleToCQL(kunderaQuery)) { return onUpdateDeleteEvent(); } else { query = null; if (kunderaQuery.isUpdateClause()) { query = createUpdateQuery(kunderaQuery); } else { query = createDeleteQuery(kunderaQuery);
List<String> columns = getColumnList(m, metaModel, getKunderaQuery().getResult(), compoundKey); String selectQuery = setSelectQuery(columns); addWhereClause(builder); onCondition(m, metaModel, compoundKey, idColumn, builder, isPresent, translator, true);
@Override public Iterator iterate() { if (kunderaQuery.isNative()) { throw new UnsupportedOperationException("Iteration not supported over native queries"); } EntityMetadata m = getEntityMetadata(); Client client = persistenceDelegeator.getClient(m); externalProperties = ((CassandraClientBase) client).getExternalProperties(); if (!MetadataUtils.useSecondryIndex(((ClientBase) client).getClientMetadata())) { throw new UnsupportedOperationException("Scrolling over cassandra is unsupported for lucene queries"); } return new ResultIterator(this, m, persistenceDelegeator.getClient(m), this.getReader(), getFetchSize() != null ? getFetchSize() : this.maxResult, kunderaMetadata); }
protected List findUsingLucene(EntityMetadata m, Client client) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit()); boolean useInvertedIndex = CassandraIndexHelper.isInvertedIndexingApplicable(m, MetadataUtils.useSecondryIndex(((ClientBase) client).getClientMetadata())); Map<Boolean, List<IndexClause>> ixClause = prepareIndexClause(m, useInvertedIndex); List<Object> result = new ArrayList<Object>(); if (((CassandraClientBase) client).isCql3Enabled(m)) { result = ((CassandraClientBase) client).executeQuery(m.getEntityClazz(), m.getRelationNames(), false, onQueryOverCQL3(m, client, metaModel, m.getRelationNames())); } else { result = ((CassandraEntityReader) getReader()).handleFindByRange(m, client, result, ixClause, true, getColumnList(m, metaModel, getKunderaQuery().getResult(), null), isSingleResult ? 1 : this.maxResult); } return result; }
@Override protected List<Object> populateEntities(EntityMetadata m, Client client) { if (log.isDebugEnabled()) { log.debug("Populating entities for Cassandra query {}.", getJPAQuery()); String query = appMetadata.getQuery(getJPAQuery()); boolean isNative = kunderaQuery.isNative(); if (!isNative && !MetadataUtils.useSecondryIndex(((ClientBase) client).getClientMetadata())) { result = populateUsingLucene(m, client, result, getKunderaQuery().getResult()); && MetadataUtils.useSecondryIndex(((ClientBase) client).getClientMetadata())) { result = ((CassandraClientBase) client).executeQuery(m.getEntityClazz(), null, isNative, onQueryOverCQL3(m, client, metaModel, null)); } else { if (isNative) { query != null ? query : getJPAQuery(), kunderaQuery.getBindParameters()); } else { result = ((CassandraClientBase) client).executeQuery(m != null ? m.getEntityClazz() : null, null, isNative, query != null ? query : getJPAQuery()); Map<Boolean, List<IndexClause>> ixClause = prepareIndexClause(m, useInvertedIndex); if (useInvertedIndex && !getKunderaQuery().getFilterClauseQueue().isEmpty()) { result = (List) ((CassandraEntityReader) getReader()).readFromIndexTable(m, client, ixClause); } else { boolean isRowKeyQuery = ixClause.keySet().iterator().next(); result = ((CassandraClientBase) client).find(ixClause.get(isRowKeyQuery), m, false, null, isSingleResult ? 1 : this.maxResult, getColumnList(m, metaModel, getKunderaQuery().getResult(), null));
boolean isNative = ((CassQuery) query).isNative(); String parsedQuery = query.onQueryOverCQL3(m, client, metaModel, null); Map<Boolean, List<IndexClause>> ixClause = query.prepareIndexClause(m, useInvertedIndex); if (useInvertedIndex && !((QueryImpl) query).getKunderaQuery().getFilterClauseQueue().isEmpty()) query.getColumnList(m, metaModel, ((QueryImpl) query).getKunderaQuery().getResult(), null), expressions, maxResult);
protected int onExecuteUpdate() EntityMetadata m = getEntityMetadata(); String query = appMetadata.getQuery(getJPAQuery()); query != null ? query : getJPAQuery()); if (!isQueryConvertibleToCQL(kunderaQuery)) List result = getResultList(); return result != null ? result.size() : 0; if (kunderaQuery.isUpdateClause()) query = createUpdateQuery(kunderaQuery); query = createDeleteQuery(kunderaQuery);
String partitionKey = null; boolean allowFiltering = false; for (Object o : getKunderaQuery().getFilterClauseQueue()) { if (o instanceof FilterClause) { FilterClause clause = ((FilterClause) o); extractCompositeKey(metaModel, keyObj, builder, translator, value, useInClause, columnValues, field); if (useInClause) { for (Attribute columnAttribute : columnValues.keySet()) { isPresent = appendInClause(builder, translator, columnValues.get(columnAttribute), ((AbstractAttribute) columnAttribute).getBindableJavaType(), ((AbstractAttribute) columnAttribute).getJPAColumnName(), isPresent); isPresent = getCompoundKeyColumn(metaModel, keyObj, builder, isPresent, translator, fieldName, condition, value, useInClause); isPresent = buildWhereClause(builder, isPresent, translator, condition, value, useInClause, ((AbstractAttribute) m.getIdAttribute()), CassandraUtilities.getIdColumnName(kunderaMetadata, m, externalProperties, isPresent = buildWhereClause(builder, isPresent, translator, condition, value, useInClause, ((AbstractAttribute) attribute), fieldName, false); builder = appendOrderByClause(metaModel, m, keyObj, builder, translator); onLimit(builder); builder.append(" ");
log.info("Preparing index clause for query {}", getJPAQuery()); for (Object o : getKunderaQuery().getFilterClauseQueue()) { if (o instanceof FilterClause) { FilterClause clause = ((FilterClause) o); throw new QueryHandlerException("IN clause is not enabled for thrift, use cql3."); IndexOperator operator = getOperator(condition, idPresent); getBytesValue(fieldName, m, value.get(0))); if (!StringUtils.isBlank(getKunderaQuery().getFilter())) { indexClause.setExpressions(expr); clauses.add(indexClause);
/** * * @param kunderaQuery * @return */ private String parseAndCreateCqlQuery(KunderaQuery kunderaQuery, EntityManagerFactory emf, EntityManager em, String puName, Class entityClass, Integer maxResult) { Method getpd = null; try { getpd = EntityManagerImpl.class.getDeclaredMethod("getPersistenceDelegator"); } catch (Exception e) { log.error("Error during execution, Caused by : ",e.getMessage()); } getpd.setAccessible(true); PersistenceDelegator pd = getPersistenceDelegator(em, getpd); KunderaMetadata kunderaMetadata = ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(); CassQuery query = new CassQuery(kunderaQuery, pd, kunderaMetadata); query.setMaxResults(maxResult); EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entityClass); Metamodel metaModel = KunderaMetadataManager.getMetamodel(kunderaMetadata, puName); Client<CassQuery> client = pd.getClient(metadata); String cqlQuery = query.onQueryOverCQL3(metadata, client, (MetamodelImpl) metaModel, metadata.getRelationNames()); return cqlQuery; }
KunderaMetadata kunderaMetadata = ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(); CassQuery query = new CassQuery(kunderaQuery, pd, kunderaMetadata); query.setMaxResults(maxResult); if(ttl != null) query.applyTTL(ttl); String cqlQuery = query.createUpdateQuery(kunderaQuery); return cqlQuery;
CassQuery query = new CassQuery(kunderaQuery, pd, kunderaMetadata); query.setMaxResults(maxResult); String cqlQuery = query.createDeleteQuery(kunderaQuery); return cqlQuery;
@Override protected List<E> populateEntities(EntityMetadata m, Client client) throws Exception { int count = 0; List results = new ArrayList(); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( m.getPersistenceUnit()); EntityType entityType = metaModel.entity(entityMetadata.getEntityClazz()); Map<String, Object> relationalValues = new HashMap<String, Object>(); if (rSet == null) { String parsedQuery = query.onQueryOverCQL3(m, client, metaModel, null); Statement statement = new SimpleStatement(parsedQuery); statement.setFetchSize(fetchSize); rSet = ((DSClient) client).executeStatement(statement); rowIter = rSet.iterator(); } while (rowIter.hasNext() && count++ < fetchSize) { Object entity = null; Row row = rowIter.next(); ((DSClient) client).populateObjectFromRow(entityMetadata, metaModel, entityType, results, relationalValues, entity, row); } return results; }
String jpaColumnName = getColumnName(metadata, property); onCondition(metadata, metaModel, compoundKey, idColumn, builder, false, translator, false);
String jpaColumnName = getColumnName(metadata, property); buildWhereClause(kunderaQuery, metadata, metaModel, translator, builder);
/** * Id value in byte arr. * * @return the byte[] */ private byte[] idValueInByteArr() { Object entity = results.get(results.size() - 1); Object id = PropertyAccessorHelper.getId(entity, entityMetadata); String idName = ((AbstractAttribute) entityMetadata.getIdAttribute()).getJPAColumnName(); Class idClazz = ((AbstractAttribute) entityMetadata.getIdAttribute()).getBindableJavaType(); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( entityMetadata.getPersistenceUnit()); EmbeddableType keyObj = null; ByteBuffer bytes = null; // if the key attribute is composite if (metaModel.isEmbeddable(entityMetadata.getIdAttribute().getBindableJavaType())) { keyObj = metaModel.embeddable(entityMetadata.getIdAttribute().getBindableJavaType()); Field embeddedField = getPartitionKeyField(); Attribute partitionKey = keyObj.getAttribute(embeddedField.getName()); Object partitionKeyValue = PropertyAccessorHelper.getObject(id, (Field) partitionKey.getJavaMember()); bytes = CassandraUtilities.toBytes(partitionKeyValue, (Field) partitionKey.getJavaMember()); } else { bytes = query.getBytesValue(idName, entityMetadata, id); } return bytes.array(); }
Field f = (Field) metaModel.entity(metadata.getEntityClazz()) .getAttribute(metadata.getFieldName(filterClause.getProperty())).getJavaMember(); String jpaColumnName = getColumnName(metadata, filterClause.getProperty());
isPresent = buildWhereClause(builder, isPresent, translator, condition, value, useInClause, attribute, columnName, false); AbstractAttribute attribute = (AbstractAttribute) keyObj.getAttribute(fieldName); String columnName = attribute.getJPAColumnName(); isPresent = buildWhereClause(builder, isPresent, translator, condition, value, useInClause, attribute, columnName, false);
log.debug("Populating entities for Cassandra query {}.", getJPAQuery()); m.getPersistenceUnit()); String query = appMetadata.getQuery(getJPAQuery()); boolean isNative = kunderaQuery.isNative(); onQueryOverCQL3(m, client, metaModel, null)); : getJPAQuery()); Map<Boolean, List<IndexClause>> ixClause = prepareIndexClause(m, useInvertedIndex); if (useInvertedIndex && !getKunderaQuery().getFilterClauseQueue().isEmpty()) result = (List) ((CassandraEntityReader) getReader()).readFromIndexTable(m, client, ixClause); getColumnList(m, getKunderaQuery().getResult(), null)); result = ((CassandraEntityReader) getReader()).handleFindByRange(m, client, result, ixClause, isRowKeyQuery, getColumnList(m, getKunderaQuery().getResult(), null), isSingleResult ? 1 : this.maxResult); result = populateUsingLucene(m, client, result, null);