[DS 4287] Refactoring the IndexableObject & SolrServiceImpl to become more expandable

This commit is contained in:
Kevin Van de Velde
2019-11-29 14:26:50 +01:00
parent 9c17f1706b
commit 4c9a30bb14
113 changed files with 3043 additions and 1857 deletions

View File

@@ -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);