diff --git a/src/main/java/org/codelibs/fess/es/config/exentity/JobLog.java b/src/main/java/org/codelibs/fess/es/config/exentity/JobLog.java index 7de625801..8ac28776e 100644 --- a/src/main/java/org/codelibs/fess/es/config/exentity/JobLog.java +++ b/src/main/java/org/codelibs/fess/es/config/exentity/JobLog.java @@ -15,6 +15,7 @@ */ package org.codelibs.fess.es.config.exentity; +import org.codelibs.core.lang.StringUtil; import org.codelibs.fess.Constants; import org.codelibs.fess.es.config.bsentity.BsJobLog; import org.codelibs.fess.util.ComponentUtil; @@ -36,9 +37,10 @@ public class JobLog extends BsJobLog { setJobName(scheduledJob.getName()); setScriptType(scheduledJob.getScriptType()); setScriptData(scheduledJob.getScriptData()); - setTarget(scheduledJob.getTarget()); setStartTime(ComponentUtil.getSystemHelper().getCurrentTimeAsLong()); setJobStatus(Constants.RUNNING); + final String myName = ComponentUtil.getFessConfig().getSchedulerTargetName(); + setTarget(StringUtil.isNotBlank(myName) ? myName : Constants.DEFAULT_JOB_TARGET); } public ScheduledJob getScheduledJob() { diff --git a/src/main/java/org/codelibs/fess/job/JobScheduler.java b/src/main/java/org/codelibs/fess/job/JobScheduler.java index f8516c004..084dada51 100644 --- a/src/main/java/org/codelibs/fess/job/JobScheduler.java +++ b/src/main/java/org/codelibs/fess/job/JobScheduler.java @@ -20,17 +20,16 @@ import static org.quartz.JobBuilder.newJob; import static org.quartz.JobKey.jobKey; import static org.quartz.TriggerBuilder.newTrigger; -import java.util.ArrayList; -import java.util.List; - import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.codelibs.core.lang.StringUtil; import org.codelibs.fess.Constants; +import org.codelibs.fess.es.config.exbhv.JobLogBhv; import org.codelibs.fess.es.config.exbhv.ScheduledJobBhv; import org.codelibs.fess.es.config.exentity.ScheduledJob; import org.codelibs.fess.helper.JobHelper; +import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.util.ComponentUtil; import org.quartz.Job; import org.quartz.JobDataMap; @@ -52,8 +51,6 @@ public class JobScheduler { public Class jobClass = TriggeredJob.class; - public List targetList = new ArrayList(); - @PostConstruct public void init() { final SchedulerFactory sf = new StdSchedulerFactory(); @@ -69,6 +66,15 @@ public class JobScheduler { cb.query().addOrderBy_SortOrder_Asc(); cb.query().addOrderBy_Name_Asc(); }, scheduledJob -> register(scheduledJob)); + + final FessConfig fessConfig = ComponentUtil.getFessConfig(); + final String myName = fessConfig.getSchedulerTargetName(); + if (StringUtil.isNotBlank(myName)) { + ComponentUtil.getComponent(JobLogBhv.class).queryDelete(cb -> { + cb.query().setJobStatus_Equal(Constants.RUNNING); + cb.query().setTarget_Equal(myName); + }); + } } @PreDestroy @@ -148,10 +154,15 @@ public class JobScheduler { return true; } + final FessConfig fessConfig = ComponentUtil.getFessConfig(); + final String myName = fessConfig.getSchedulerTargetName(); + final String[] targets = target.split(","); for (String name : targets) { name = name.trim(); - if (Constants.DEFAULT_JOB_TARGET.equals(name) || targetList.contains(name)) { + if (Constants.DEFAULT_JOB_TARGET.equalsIgnoreCase(name)) { + return true; + } else if (StringUtil.isNotBlank(myName) && myName.equalsIgnoreCase(name)) { return true; } } diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java index 118553f52..97ee77f42 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java +++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java @@ -309,6 +309,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction /** The key of the configuration. e.g. root@localhost */ String MAIL_FROM_ADDRESS = "mail.from.address"; + /** The key of the configuration. e.g. */ + String SCHEDULER_TARGET_NAME = "scheduler.target.name"; + /** The key of the configuration. e.g. http://fess.codelibs.org/{lang}/{version}/admin/ */ String ONLINE_HELP_BASE_LINK = "online.help.base.link"; @@ -1411,6 +1414,23 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction */ String getMailFromAddress(); + /** + * Get the value for the key 'scheduler.target.name'.
+ * The value is, e.g.
+ * comment: ------ + * @return The value of found property. (NotNull: if not found, exception but basically no way) + */ + String getSchedulerTargetName(); + + /** + * Get the value for the key 'scheduler.target.name' as {@link Integer}.
+ * The value is, e.g.
+ * comment: ------ + * @return The value of found property. (NotNull: if not found, exception but basically no way) + * @throws NumberFormatException When the property is not integer. + */ + Integer getSchedulerTargetNameAsInteger(); + /** * Get the value for the key 'online.help.base.link'.
* The value is, e.g. http://fess.codelibs.org/{lang}/{version}/admin/
@@ -2298,6 +2318,14 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction return get(FessConfig.MAIL_FROM_ADDRESS); } + public String getSchedulerTargetName() { + return get(FessConfig.SCHEDULER_TARGET_NAME); + } + + public Integer getSchedulerTargetNameAsInteger() { + return getAsInteger(FessConfig.SCHEDULER_TARGET_NAME); + } + public String getOnlineHelpBaseLink() { return get(FessConfig.ONLINE_HELP_BASE_LINK); } diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties index 0c7e9f271..6d68f3c58 100644 --- a/src/main/resources/fess_config.properties +++ b/src/main/resources/fess_config.properties @@ -187,6 +187,10 @@ paging.search.page.max.size=100 mail.from.name = Administrator mail.from.address = root@localhost +# ---------------------------------------------------------- +# Scheduler +# ------ +scheduler.target.name= # ---------------------------------------------------------- # OnlineHelp