/** * Gets the metamodel. * * @param persistenceUnit * the persistence unit * @return the metamodel */ public static MetamodelImpl getMetamodel(final KunderaMetadata kunderaMetadata, String persistenceUnit) { MetamodelImpl metamodel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(persistenceUnit); return metamodel; }
/** * @param _PU1 */ private void checkEMFPropertyAfterClosing(String _PU1, EntityManagerFactory emf) { Assert.assertFalse(emf.isOpen()); KunderaMetadata kunderaMetadata = ((EntityManagerFactoryImpl)emf).getKunderaMetadataInstance(); Assert.assertNotNull(kunderaMetadata.getApplicationMetadata().getPersistenceUnitMetadata(_PU1)); Assert.assertNotNull(kunderaMetadata.getApplicationMetadata().getPersistenceUnitMetadataMap().get(_PU1)); // Assert.assertNull(kunderaMetadata.getClientMetadata(_PU1)); Assert.assertNotNull(kunderaMetadata.getApplicationMetadata().getMetamodelMap().get(_PU1)); Assert.assertNotNull(kunderaMetadata.getApplicationMetadata().getMetamodel(_PU1)); Assert.assertNotNull(kunderaMetadata.getApplicationMetadata().getMetaModelBuilder(_PU1)); // Assert.assertNotNull(kunderaMetadata.getApplicationMetadata().getSchemaMetadata().getPuToSchemaMetadata() // .get(_PU1)); }
/** * Returns map of entity metdata {@link EntityMetadata}. * * @param appMetadata * application metadata * @param persistenceUnit * persistence unit * @return map of entity metadata. */ private Map<String, EntityMetadata> getEntityMetadataCol(ApplicationMetadata appMetadata, String persistenceUnit) { Metamodel metaModel = appMetadata.getMetamodel(persistenceUnit); Map<String, EntityMetadata> entityMetadataMap = ((MetamodelImpl) metaModel).getEntityMetadataMap(); return entityMetadataMap; }
/** * 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); }
/** * Gets the filter for discr column. * * @param m * the m * @return the filter for discr column */ private Filter getFilterForDiscrColumn(EntityMetadata m) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(m.getPersistenceUnit()); AbstractManagedType entity = (AbstractManagedType) metaModel.entity(m.getEntityClazz()); if (entity.isInherited()) { return new SingleColumnValueFilter(Bytes.toBytes(m.getTableName()), Bytes.toBytes(entity.getDiscriminatorColumn()), CompareOp.EQUAL, Bytes.toBytes(entity.getDiscriminatorValue())); } return null; }
/** * Populate partial row. * * @param row * the row * @param entityMetadata * the entity metadata * @param entity * the entity */ private void populatePartialRow(PartialRow row, 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(); iterateAndPopulateRow(row, 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); }
@Test public void testMappedMetamodel() { EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata( ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(), Employee.class); MetamodelImpl metaModel = (MetamodelImpl) ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance() .getApplicationMetadata().getMetamodel(persistenceUnit); EntityType entityType = metaModel.entity(Employee.class); Set<Attribute> attributes = entityType.getAttributes(); Assert.assertEquals(5, attributes.size()); Assert.assertNotNull(entityMetadata.getIdAttribute()); Assert.assertNotNull("id", entityMetadata.getIdAttribute().getName()); }
@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; }