From a93c6ee6e0589d30a3c9f3f4c1b3dff48f9494ab Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 29 Sep 2014 15:06:11 +0200
Subject: [PATCH] OO-1223: directly start the indexer if the cron job is
 disabled

---
 .../org/olat/search/_spring/searchContext.xml |  1 +
 .../search/service/SearchServiceImpl.java     | 25 +++++++++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/olat/search/_spring/searchContext.xml b/src/main/java/org/olat/search/_spring/searchContext.xml
index 947ff98cd6f..cbaf19b0680 100644
--- a/src/main/java/org/olat/search/_spring/searchContext.xml
+++ b/src/main/java/org/olat/search/_spring/searchContext.xml
@@ -25,6 +25,7 @@
 		<property name="lifeIndexer" ref="jmsIndexer"/>
 		<property name="metadataFields" ref="SearchMetadataFieldsProvider" />
 		<property name="searchExecutor" ref="searchExecutor" />
+		<property name="indexerCron" value="${search.indexing.cronjob}" />
 	</bean>
 	
 		<bean id="searchExecutor" class="org.springframework.core.task.support.ExecutorServiceAdapter">
diff --git a/src/main/java/org/olat/search/service/SearchServiceImpl.java b/src/main/java/org/olat/search/service/SearchServiceImpl.java
index 17d239355fa..7b58251dad0 100644
--- a/src/main/java/org/olat/search/service/SearchServiceImpl.java
+++ b/src/main/java/org/olat/search/service/SearchServiceImpl.java
@@ -101,6 +101,7 @@ public class SearchServiceImpl implements SearchService, GenericEventListener {
 	private SearchSpellChecker searchSpellChecker;
 	private String indexPath;
 	private String permanentIndexPath;
+	private String indexerCron;
 	
 	/** Counts number of search queries since last restart. */
 	private long queryCount = 0;
@@ -152,6 +153,14 @@ public class SearchServiceImpl implements SearchService, GenericEventListener {
 		this.lifeIndexer = lifeIndexer;
 	}
 	
+	/**
+	 * [used by Spring]
+	 * @param indexerCron
+	 */
+	public void setIndexerCron(String indexerCron) {
+		this.indexerCron = indexerCron;
+	}
+
 	protected MainIndexer getMainIndexer() {
 		return mainIndexer;
 	}
@@ -169,7 +178,13 @@ public class SearchServiceImpl implements SearchService, GenericEventListener {
 		
 		try {
 			JobDetail detail = scheduler.getJobDetail("org.olat.search.job.enabled", Scheduler.DEFAULT_GROUP);
-			scheduler.triggerJob(detail.getName(), detail.getGroup());
+			if(detail == null) {
+				if("disabled".equals(indexerCron)) {
+					indexer.startFullIndex();
+				}
+			} else {
+				scheduler.triggerJob(detail.getName(), detail.getGroup());
+			}
 			log.info("startIndexing...");
 		} catch (SchedulerException e) {
 			log.error("Error trigerring the indexer job: ", e);
@@ -185,7 +200,13 @@ public class SearchServiceImpl implements SearchService, GenericEventListener {
 
 		try {
 			JobDetail detail = scheduler.getJobDetail("org.olat.search.job.enabled", Scheduler.DEFAULT_GROUP);
-			scheduler.interrupt(detail.getName(), detail.getGroup());
+			if(detail == null) {
+				if("disabled".equals(indexerCron)) {
+					indexer.stopFullIndex();
+				}
+			} else {
+				scheduler.interrupt(detail.getName(), detail.getGroup());
+			}
 			log.info("stopIndexing.");
 		} catch (SchedulerException e) {
 			log.error("Error interrupting the indexer job: ", e);
-- 
GitLab