diff --git a/src/main/java/org/olat/modules/webFeed/search/indexer/BlogCourseNodeIndexer.java b/src/main/java/org/olat/modules/webFeed/search/indexer/BlogCourseNodeIndexer.java index 84b54f8fa6f55a17bcec68cbae41b020fb24f1b8..8c3e940eaaca93edb0023387b1645660c93a209b 100644 --- a/src/main/java/org/olat/modules/webFeed/search/indexer/BlogCourseNodeIndexer.java +++ b/src/main/java/org/olat/modules/webFeed/search/indexer/BlogCourseNodeIndexer.java @@ -35,6 +35,7 @@ public class BlogCourseNodeIndexer extends FeedCourseNodeIndexer { /** * @see org.olat.modules.webFeed.search.indexer.FeedRepositoryIndexer#getSupportedTypeName() */ + @Override public String getSupportedTypeName() { return SUPPORTED_TYPE_NAME; } @@ -42,6 +43,7 @@ public class BlogCourseNodeIndexer extends FeedCourseNodeIndexer { /** * @see org.olat.modules.webFeed.search.indexer.FeedRepositoryIndexer#getDocumentType() */ + @Override protected String getDocumentType() { return TYPE; } diff --git a/src/main/java/org/olat/modules/webFeed/search/indexer/FeedCourseNodeIndexer.java b/src/main/java/org/olat/modules/webFeed/search/indexer/FeedCourseNodeIndexer.java index f7bae1ee8504c73fa0b15af33782c82c3f78f51a..885def745019ada76755381144e0c9612eb7a083 100644 --- a/src/main/java/org/olat/modules/webFeed/search/indexer/FeedCourseNodeIndexer.java +++ b/src/main/java/org/olat/modules/webFeed/search/indexer/FeedCourseNodeIndexer.java @@ -21,6 +21,7 @@ package org.olat.modules.webFeed.search.indexer; import java.io.IOException; +import org.apache.lucene.document.Document; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.course.ICourse; @@ -33,6 +34,7 @@ import org.olat.modules.webFeed.search.document.FeedNodeDocument; import org.olat.repository.RepositoryEntry; import org.olat.search.model.OlatDocument; import org.olat.search.service.SearchResourceContext; +import org.olat.search.service.document.CourseNodeDocument; import org.olat.search.service.indexer.DefaultIndexer; import org.olat.search.service.indexer.OlatFullIndexer; import org.olat.search.service.indexer.repository.course.CourseNodeIndexer; @@ -60,8 +62,13 @@ public abstract class FeedCourseNodeIndexer extends DefaultIndexer implements Co * java.lang.Object, org.olat.search.service.indexer.OlatFullIndexer) */ @Override - public void doIndex(SearchResourceContext searchResourceContext, ICourse course, CourseNode courseNode, OlatFullIndexer indexer) + public void doIndex(SearchResourceContext courseResourceContext, ICourse course, CourseNode courseNode, OlatFullIndexer indexer) throws IOException, InterruptedException { + + SearchResourceContext courseNodeResourceContext = createSearchResourceContext(courseResourceContext, courseNode, getDocumentType()); + Document document = CourseNodeDocument.createDocument(courseNodeResourceContext, courseNode); + indexer.addDocument(document); + RepositoryEntry repositoryEntry = courseNode.getReferencedRepositoryEntry(); if(repositoryEntry != null) { // used for log messages @@ -72,21 +79,14 @@ public abstract class FeedCourseNodeIndexer extends DefaultIndexer implements Co log.info("Indexing: " + repoEntryName); } Feed feed = FeedManager.getInstance().getFeed(repositoryEntry.getOlatResource()); - - // Set the document type, e.g. type.repository.entry.FileResource.BLOG - SearchResourceContext nodeSearchContext = new SearchResourceContext(searchResourceContext); - nodeSearchContext.setBusinessControlFor(courseNode); - nodeSearchContext.setDocumentType(getDocumentType()); - nodeSearchContext.setTitle(courseNode.getShortTitle()); - nodeSearchContext.setDescription(courseNode.getLongTitle()); - + // Create the olatDocument for the feed course node itself - OlatDocument feedNodeDoc = new FeedNodeDocument(feed, nodeSearchContext); + OlatDocument feedNodeDoc = new FeedNodeDocument(feed, courseNodeResourceContext); indexer.addDocument(feedNodeDoc.getLuceneDocument()); // Only index items. Feed itself is indexed by RepositoryEntryIndexer. for (Item item : feed.getPublishedItems()) { - OlatDocument itemDoc = new FeedItemDocument(item, nodeSearchContext); + OlatDocument itemDoc = new FeedItemDocument(item, courseNodeResourceContext); indexer.addDocument(itemDoc.getLuceneDocument()); } } catch (NullPointerException e) { diff --git a/src/main/java/org/olat/modules/webFeed/search/indexer/PodcastCourseNodeIndexer.java b/src/main/java/org/olat/modules/webFeed/search/indexer/PodcastCourseNodeIndexer.java index 746b8910bdf36bf69ebaee25ad7a035681cc5076..72e5c3bcf860d24dbd63afc60edc00227eeaab54 100644 --- a/src/main/java/org/olat/modules/webFeed/search/indexer/PodcastCourseNodeIndexer.java +++ b/src/main/java/org/olat/modules/webFeed/search/indexer/PodcastCourseNodeIndexer.java @@ -36,6 +36,7 @@ public class PodcastCourseNodeIndexer extends FeedCourseNodeIndexer { /** * @see org.olat.modules.webFeed.search.indexer.FeedRepositoryIndexer#getSupportedTypeName() */ + @Override public String getSupportedTypeName() { return SUPPORTED_TYPE_NAME; } @@ -43,6 +44,7 @@ public class PodcastCourseNodeIndexer extends FeedCourseNodeIndexer { /** * @see org.olat.modules.webFeed.search.indexer.FeedRepositoryIndexer#getDocumentType() */ + @Override protected String getDocumentType() { return TYPE; } diff --git a/src/main/java/org/olat/search/_spring/searchContext.xml b/src/main/java/org/olat/search/_spring/searchContext.xml index 70058a66e933d83c8d1fe9c14dd83bd9f49b07c3..9a0bf2d6618684f7036562bf018f1c2c163d8eb6 100644 --- a/src/main/java/org/olat/search/_spring/searchContext.xml +++ b/src/main/java/org/olat/search/_spring/searchContext.xml @@ -204,10 +204,12 @@ <ref bean="vcCourseNodeIndexer" /> <ref bean="videoCourseNodeIndexer" /> <ref bean="viteroCourseNodeIndexer" /> + <ref bean="coCourseNodeIndexer" /> </list> </property> </bean> + <bean id="coCourseNodeIndexer" class="org.olat.search.service.indexer.repository.course.COCourseNodeIndexer" /> <bean id="tuCourseNodeIndexer" class="org.olat.search.service.indexer.repository.course.TUCourseNodeIndexer" /> <bean id="vcCourseNodeIndexer" class="org.olat.search.service.indexer.repository.course.VCCourseNodeIndexer" /> <bean id="videoCourseNodeIndexer" class="org.olat.search.service.indexer.repository.course.VideoCourseNodeIndexer" />