Browse Source

enable/disable job schedule

Shinsuke Sugaya 9 years ago
parent
commit
76f8a38372

+ 1 - 1
pom.xml

@@ -43,7 +43,7 @@
 		<dbflute.version>1.1.1</dbflute.version>
 		<lastaflute.version>0.7.9-RC4</lastaflute.version>
 		<lasta.taglib.version>0.6.8</lasta.taglib.version>
-		<lasta.job.version>0.2.0-RCC</lasta.job.version>
+		<lasta.job.version>0.2.0-RCD</lasta.job.version>
 		<servlet.version>3.1.0</servlet.version>
 		<jsp.version>2.3.1</jsp.version>
 		<mailflute.version>0.4.8</mailflute.version>

+ 0 - 2
src/main/java/org/codelibs/fess/Constants.java

@@ -76,8 +76,6 @@ public class Constants extends CoreLibConstants {
 
     public static final String DEFAULT_HOURLY_CRON_EXPRESSION = "0 * * * *";
 
-    public static final String UNSCHEDULE_CRON_EXPRESSION = "0 0 1 1 sun";
-
     public static final int DEFAULT_INTERVAL_TIME_FOR_FS = 1000;
 
     public static final int DEFAULT_INTERVAL_TIME_FOR_WEB = 30000;

+ 25 - 14
src/main/java/org/codelibs/fess/app/service/ScheduledJobService.java

@@ -143,25 +143,38 @@ public class ScheduledJobService implements Serializable {
             return;
         }
 
-        final String cronExpression;
-        if (StringUtil.isNotBlank(scheduledJob.getCronExpression())) {
-            logger.info("Starting Job " + id + ":" + scheduledJob.getName());
-            cronExpression = scheduledJob.getCronExpression();
-        } else {
-            logger.info("Inactive Job " + id + ":" + scheduledJob.getName());
-            cronExpression = Constants.UNSCHEDULE_CRON_EXPRESSION;
-        }
         final CronOpCall opLambda = option -> option.uniqueBy(id).changeNoticeLogToDebug().params(() -> {
             Map<String, Object> params = new HashMap<>();
             params.put(Constants.SCHEDULED_JOB, scheduledJob);
             return params;
         });
         findJobByUniqueOf(LaJobUnique.of(id)).ifPresent(job -> {
-            job.reschedule(cronExpression, opLambda);
+            if (!job.isUnscheduled()) {
+                if (StringUtil.isNotBlank(scheduledJob.getCronExpression())) {
+                    logger.info("Starting Job " + id + ":" + scheduledJob.getName());
+                    final String cronExpression = scheduledJob.getCronExpression();
+                    job.reschedule(cronExpression, opLambda);
+                } else {
+                    logger.info("Inactive Job " + id + ":" + scheduledJob.getName());
+                    job.becomeNonCron();
+                }
+            } else if (StringUtil.isNotBlank(scheduledJob.getCronExpression())) {
+                logger.info("Starting Job " + id + ":" + scheduledJob.getName());
+                String cronExpression = scheduledJob.getCronExpression();
+                job.reschedule(cronExpression, opLambda);
+            }
         }).orElse(
                 () -> {
-                    cron.register(cronExpression, fessConfig.getSchedulerJobClassAsClass(),
-                            fessConfig.getSchedulerConcurrentExecModeAsEnum(), opLambda);
+                    if (StringUtil.isNotBlank(scheduledJob.getCronExpression())) {
+                        logger.info("Starting Job " + id + ":" + scheduledJob.getName());
+                        final String cronExpression = scheduledJob.getCronExpression();
+                        cron.register(cronExpression, fessConfig.getSchedulerJobClassAsClass(),
+                                fessConfig.getSchedulerConcurrentExecModeAsEnum(), opLambda);
+                    } else {
+                        logger.info("Inactive Job " + id + ":" + scheduledJob.getName());
+                        cron.registerNonCron(fessConfig.getSchedulerJobClassAsClass(), fessConfig.getSchedulerConcurrentExecModeAsEnum(),
+                                opLambda);
+                    }
                 });
     }
 
@@ -188,9 +201,7 @@ public class ScheduledJobService implements Serializable {
     }
 
     protected boolean isTarget(final String target) {
-        if (StringUtil.isBlank(target))
-
-        {
+        if (StringUtil.isBlank(target)) {
             return true;
         }