mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-13 21:13:19 +00:00
[DS 4287] Refactoring the IndexableObject & SolrServiceImpl to become more expandable
This commit is contained in:
@@ -15,6 +15,7 @@ import org.dspace.content.Bundle;
|
||||
import org.dspace.content.DSpaceObject;
|
||||
import org.dspace.core.Constants;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.discovery.indexobject.factory.IndexObjectFactoryFactory;
|
||||
import org.dspace.event.Consumer;
|
||||
import org.dspace.event.Event;
|
||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||
@@ -42,6 +43,8 @@ public class IndexEventConsumer implements Consumer {
|
||||
.getServiceByName(IndexingService.class.getName(),
|
||||
IndexingService.class);
|
||||
|
||||
IndexObjectFactoryFactory indexObjectServiceFactory = IndexObjectFactoryFactory.getInstance();
|
||||
|
||||
@Override
|
||||
public void initialize() throws Exception {
|
||||
|
||||
@@ -58,8 +61,8 @@ public class IndexEventConsumer implements Consumer {
|
||||
public void consume(Context ctx, Event event) throws Exception {
|
||||
|
||||
if (objectsToUpdate == null) {
|
||||
objectsToUpdate = new HashSet<IndexableObject>();
|
||||
uniqueIdsToDelete = new HashSet<String>();
|
||||
objectsToUpdate = new HashSet<>();
|
||||
uniqueIdsToDelete = new HashSet<>();
|
||||
}
|
||||
|
||||
int st = event.getSubjectType();
|
||||
@@ -103,11 +106,11 @@ public class IndexEventConsumer implements Consumer {
|
||||
if (subject == null) {
|
||||
log.warn(event.getEventTypeAsString() + " event, could not get object for "
|
||||
+ event.getSubjectTypeAsString() + " id="
|
||||
+ String.valueOf(event.getSubjectID())
|
||||
+ event.getSubjectID()
|
||||
+ ", perhaps it has been deleted.");
|
||||
} else {
|
||||
log.debug("consume() adding event to update queue: " + event.toString());
|
||||
objectsToUpdate.add((IndexableObject)subject);
|
||||
objectsToUpdate.addAll(indexObjectServiceFactory.getIndexableObjects(ctx, subject));
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -116,11 +119,11 @@ public class IndexEventConsumer implements Consumer {
|
||||
if (object == null) {
|
||||
log.warn(event.getEventTypeAsString() + " event, could not get object for "
|
||||
+ event.getObjectTypeAsString() + " id="
|
||||
+ String.valueOf(event.getObjectID())
|
||||
+ event.getObjectID()
|
||||
+ ", perhaps it has been deleted.");
|
||||
} else {
|
||||
log.debug("consume() adding event to update queue: " + event.toString());
|
||||
objectsToUpdate.add((IndexableObject)object);
|
||||
objectsToUpdate.addAll(indexObjectServiceFactory.getIndexableObjects(ctx, subject));
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -159,14 +162,14 @@ public class IndexEventConsumer implements Consumer {
|
||||
* allow the search indexer to make
|
||||
* decisions on indexing and/or removal
|
||||
*/
|
||||
iu = ctx.reloadEntity(iu);
|
||||
iu.setIndexedObject(ctx.reloadEntity(iu.getIndexedObject())); ;
|
||||
String uniqueIndexID = iu.getUniqueIndexID();
|
||||
if (uniqueIndexID != null && !uniqueIdsToDelete.contains(uniqueIndexID)) {
|
||||
try {
|
||||
indexer.indexContent(ctx, iu, true, true);
|
||||
log.debug("Indexed "
|
||||
+ Constants.typeText[iu.getType()]
|
||||
+ ", id=" + String.valueOf(iu.getID())
|
||||
+ iu.getTypeText()
|
||||
+ ", id=" + iu.getID()
|
||||
+ ", unique_id=" + uniqueIndexID);
|
||||
} catch (Exception e) {
|
||||
log.error("Failed while indexing object: ", e);
|
||||
|
Reference in New Issue
Block a user