protected boolean isEntityForNeo4J(EntityMetadata entityMetadata) { String persistenceUnit = entityMetadata.getPersistenceUnit(); PersistenceUnitMetadata puMetadata = KunderaMetadataManager.getPersistenceUnitMetadata(kunderaMetadata, persistenceUnit); String clientFactory = puMetadata.getProperty(PersistenceProperties.KUNDERA_CLIENT_FACTORY); if (clientFactory.indexOf("com.impetus.client.neo4j") >= 0) { return true; } return false; }
/** * Gets the client. * * @param m * the m * @return the client */ public Client getClient(EntityMetadata m) { // // Persistence Unit used to retrieve client if (m == null) { throw new KunderaException("Entitymatadata should not be null"); } String persistenceUnit = m.getPersistenceUnit(); return getClient(persistenceUnit); }
public Object generateAndSetId(Object e, EntityMetadata m, PersistenceDelegator pd, final KunderaMetadata kunderaMetadata) { Metamodel metamodel = KunderaMetadataManager.getMetamodel(kunderaMetadata, m.getPersistenceUnit()); Client<?> client = pd.getClient(m); return generateId(e, m, client, kunderaMetadata); }
private void processGeneratedValueAnnotation(Class<?> clazz, String persistenceUnit, EntityMetadata m, Map<String, IdDiscriptor> entityNameToKeyDiscriptorMap) { GeneratedValueProcessor processer = new GeneratedValueProcessor(); String pu = m.getPersistenceUnit(); String clientFactoryName = getClientFactoryName(persistenceUnit); if (pu != null && pu.equals(persistenceUnit) || clientFactoryName.equalsIgnoreCase("com.impetus.client.rdbms.RDBMSClientFactory")) { Field f = (Field) m.getIdAttribute().getJavaMember(); if (f.isAnnotationPresent(GeneratedValue.class)) { processer.process(clazz, f, m, entityNameToKeyDiscriptorMap); } } }
@Override public void validateEntity(Class<?> clazz, final KunderaMetadata kunderaMetadata) { EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, clazz); if (metadata != null) { SchemaManager schemaManager = ClientResolver.getClientFactory(metadata.getPersistenceUnit()) .getSchemaManager(puProperties); if (schemaManager != null && !schemaManager.validateEntity(clazz)) { log.warn("Validation for : " + clazz + " failed , any operation on this class will result in fail."); } } } }
/** * Indexes an object. * * @param metadata * the metadata * @param entity * the entity */ public final void write(EntityMetadata metadata, Object entity) { if (indexer != null) { MetamodelImpl metamodel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( metadata.getPersistenceUnit()); ((com.impetus.kundera.index.lucene.Indexer) indexer).index(metadata, metamodel, entity); } }
@Override public boolean documentExistsInIndex(EntityMetadata metadata, Object id, KunderaMetadata kunderaMetadata, boolean isEmbeddedId, Class<?> parentClazz) { String luceneQuery = null; MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( metadata.getPersistenceUnit()); luceneQuery = getLuceneQuery(metadata, id, isEmbeddedId, metaModel, parentClazz); Map<String, Object> results; try { results = search(luceneQuery, 0, 10, false, kunderaMetadata, metadata); } catch (LuceneIndexingException e) { results = null; } return !(results == null || results.isEmpty()); }
/** * Gets the sub managed type. * * @param entityClass * the entity class * @param entityMetadata * the entity metadata * @return the sub managed type */ private List<AbstractManagedType> getSubManagedType(Class entityClass, EntityMetadata entityMetadata) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( entityMetadata.getPersistenceUnit()); EntityType entityType = metaModel.entity(entityClass); List<AbstractManagedType> subManagedType = ((AbstractManagedType) entityType).getSubManagedType(); return subManagedType; }
/** * Populate rmap. * * @param entityMetadata * the entity metadata * @param entity * the entity * @return the map object */ private MapObject populateRmap(EntityMetadata entityMetadata, Object entity) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(entityMetadata.getPersistenceUnit()); Class entityClazz = entityMetadata.getEntityClazz(); EntityType entityType = metaModel.entity(entityClazz); Set<Attribute> attributes = entityType.getAttributes(); Iterator<Attribute> iterator = attributes.iterator(); return iterateAndPopulateRmap(entity, metaModel, iterator); }
@Override public void delete(Object entity, Object pKey) { EntityMetadata m = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entity.getClass()); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit()); AbstractManagedType managedType = (AbstractManagedType) metaModel.entity(m.getEntityClazz()); // For secondary tables. List<String> secondaryTables = ((DefaultEntityAnnotationProcessor) managedType.getEntityAnnotation()).getSecondaryTablesName(); secondaryTables.add(m.getTableName()); for (String tableName : secondaryTables) { this.execute(onDeleteQuery(m, tableName, metaModel, pKey), null); } }
@Override public JsonDocument getDocumentFromEntity(EntityMetadata entityMetadata, Object entity, KunderaMetadata kunderaMetadata) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(entityMetadata.getPersistenceUnit()); Class entityClazz = entityMetadata.getEntityClazz(); EntityType entityType = metaModel.entity(entityClazz); Set<Attribute> attributes = entityType.getAttributes(); Iterator<Attribute> iterator = attributes.iterator(); JsonObject obj = iterateAndPopulateJsonObject(entity, iterator, entityMetadata.getTableName()); Object id = PropertyAccessorHelper.getId(entity, entityMetadata); return JsonDocument.create(entityMetadata.getTableName() + CouchbaseConstants.ID_SEPARATOR + id.toString(), obj); }
@Override public Object find(Class entityClass, Object key) { EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entityClass); JsonDocument doc; String id = generateJsonDocId(entityMetadata.getTableName(), key.toString()); doc = bucket.get(id); LOGGER.debug("Found result for ID : " + key.toString() + " in the " + bucket.name() + " Bucket"); if (doc == null) { return null; } else { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(entityMetadata.getPersistenceUnit()); EntityType entityType = metaModel.entity(entityMetadata.getEntityClazz()); return handler.getEntityFromDocument(entityClass, doc.content(), entityType); } }
@Override protected void onPersist(EntityMetadata entityMetadata, Object entity, Object id, List<RelationHolder> rlHolders) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( entityMetadata.getPersistenceUnit()); AbstractManagedType managedType = (AbstractManagedType) metaModel.entity(entityMetadata.getEntityClazz()); if (managedType.hasLobAttribute()) { onPersistGFS(entity, id, entityMetadata, isUpdate); } else { Map<String, List<DBObject>> collections = new HashMap<String, List<DBObject>>(); collections = onPersist(collections, entity, id, entityMetadata, rlHolders, isUpdate); onFlushCollection(collections); } }
@Override public void delete(Object entity, Object rowKey) { EntityMetadata m = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entity.getClass()); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( m.getPersistenceUnit()); if (metaModel.isEmbeddable(m.getIdAttribute().getBindableJavaType())) { rowKey = KunderaCoreUtils.prepareCompositeKey(m, rowKey); } deleteByColumn(m.getSchema(), m.getTableName(), null, rowKey); }
@Override public Object find(Class entityClass, Object key) { EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entityClass); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( entityMetadata.getPersistenceUnit()); AbstractManagedType managedType = (AbstractManagedType) metaModel.entity(entityMetadata.getEntityClazz()); return managedType.hasLobAttribute() ? findGFSEntity(entityMetadata, entityClass, key) : find(entityClass, key, entityMetadata, metaModel, managedType); }
@Override public void delete(Object entity, Object pKey) { s = getStatelessSession(); Transaction tx = null; tx = onBegin(); s.delete(entity); onCommit(tx); EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entity.getClass()); MetamodelImpl metamodel = (MetamodelImpl) KunderaMetadataManager.getMetamodel(kunderaMetadata, metadata.getPersistenceUnit()); if (!MetadataUtils.useSecondryIndex(getClientMetadata())) { getIndexManager().remove(metadata, entity, pKey); } }
@Override public void delete(Object entity, Object pKey) { EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entity.getClass()); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( metadata.getPersistenceUnit()); AbstractManagedType managedType = (AbstractManagedType) metaModel.entity(metadata.getEntityClazz()); List<String> secondaryTables = ((DefaultEntityAnnotationProcessor) managedType.getEntityAnnotation()) .getSecondaryTablesName(); secondaryTables.add(metadata.getTableName()); if (metaModel.isEmbeddable(metadata.getIdAttribute().getBindableJavaType())) { pKey = KunderaCoreUtils.prepareCompositeKey(metadata, pKey); } for (String colTableName : secondaryTables) { deleteByColumn(metadata.getSchema(), colTableName, ((AbstractAttribute) metadata.getIdAttribute()).getJPAColumnName(), pKey); } }
@Override protected List<Object> populateEntities(EntityMetadata m, Client client) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( m.getPersistenceUnit()); EntityType entity = metaModel.entity(m.getEntityClazz()); Expression whereExpression = KunderaQueryUtils.getWhereClause(kunderaQuery.getJpqlExpression()); QueryBuilder filter = whereExpression == null || whereExpression instanceof NullExpression ? null : esFilterBuilder.populateFilterBuilder(((WhereClause) whereExpression).getConditionalExpression(), m); return ((ESClient) client).executeQuery(filter, buildAggregation(kunderaQuery, m, filter), m, getKunderaQuery(),this.firstResult, this.maxResult); }
@Override public Map<String, Object> search(KunderaMetadata kunderaMetadata, KunderaQuery kunderaQuery, PersistenceDelegator persistenceDelegator, EntityMetadata m, int firstResult, int maxResults) { ESQuery query = new ESQuery<>(kunderaQuery, persistenceDelegator, kunderaMetadata); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(m.getPersistenceUnit()); Expression whereExpression = KunderaQueryUtils.getWhereClause(kunderaQuery.getJpqlExpression()); QueryBuilder filter = whereExpression != null ? query.getEsFilterBuilder() .populateFilterBuilder(((WhereClause) whereExpression).getConditionalExpression(), m) : null; FilteredQueryBuilder queryBuilder = QueryBuilders.filteredQuery(null, filter); SearchResponse response = getSearchResponse(kunderaQuery, queryBuilder, filter, query, m, firstResult, maxResults, kunderaMetadata); return buildResultMap(response, kunderaQuery, m, metaModel); }
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; }