{
if (indexer != null)
{
if (indexer.getClass().getName().equals(IndexingConstants.LUCENE_INDEXER))
{
MetamodelImpl metamodel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(
metadata.getPersistenceUnit());
Object id = PropertyAccessorHelper.getId(entity, metadata);
boolean isEmbeddedId = metamodel.isEmbeddable(metadata.getIdAttribute().getBindableJavaType());
boolean documentExistsInIndex = ((com.impetus.kundera.index.lucene.Indexer) indexer)
.documentExistsInIndex(metadata, id, kunderaMetadata, isEmbeddedId);
if (documentExistsInIndex)
{
((com.impetus.kundera.index.lucene.Indexer) indexer).update(metadata, metamodel, entity, id,
parentId != null ? parentId.toString() : null);
}
else
{
boolean documentExists = ((com.impetus.kundera.index.lucene.Indexer) indexer)
.entityExistsInIndex(entity.getClass(), kunderaMetadata, metadata);
if (documentExists)
{
((com.impetus.kundera.index.lucene.Indexer) indexer).unindex(metadata, id, kunderaMetadata);
((com.impetus.kundera.index.lucene.Indexer) indexer).flush();
}
((com.impetus.kundera.index.lucene.Indexer) indexer).index(metadata, metamodel, entity,
parentId != null ? parentId.toString() : null, clazz);
}
}
else
{
MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(
metadata.getPersistenceUnit());
Map<String, PropertyIndex> indexProperties = metadata.getIndexProperties();
Map<String, Object> indexCollection = new HashMap<String, Object>();
Object id = PropertyAccessorHelper.getId(entity, metadata);