git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorvasary.daniel <TFS\vasary.daniel>
Mon, 8 Feb 2021 19:29:49 +0000 (19:29 +0000)
committervasary.daniel <TFS\vasary.daniel>
Mon, 8 Feb 2021 19:29:49 +0000 (19:29 +0000)
server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java
server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java
server/user.mediacube.gui/src/user/jobengine/zk/model/AlternateRetrieveBatchSelectorModel.java
server/user.mediacube.gui/src/user/jobengine/zk/model/JobSelectorModel.java

index cd38fc11ab6b6c39a69ef72af8cc31f018342dc2..0dde1db99667052ed864d716d456badd9664c4bc 100644 (file)
@@ -13,15 +13,13 @@ public interface IJobEngineConfiguration {
 \r
        IJobStep createJobStep(String stepUnitName) throws Exception;\r
 \r
-       ScheduledJob createScheduledJob(BasicDBObject jobJSON);\r
+       ScheduledJob createScheduledJob(BasicDBObject jobJSON, IJobEngine jobEngine);\r
 \r
        Map<String, IJobStepExecutor> getExecutors();\r
 \r
        Map<String, IProgram> getPrograms();\r
 \r
-       List<BasicDBObject> getScheduleDescriptors();\r
-\r
-       Map<String, ScheduledJob> getSchedules();\r
+       Map<String, BasicDBObject> getSchedules();\r
 \r
        List<JobTemplate> getTemplates();\r
 \r
index 500b7447d65208bb3434c6e0714f85b0e36b0815..4d441e8b5fb7872c74e678a0e3780ada5521a157 100644 (file)
@@ -21,6 +21,7 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import com.ibm.nosql.json.api.BasicDBList;
+import com.ibm.nosql.json.api.BasicDBObject;
 
 import user.commons.Job;
 import user.commons.JobStatus;
@@ -530,11 +531,11 @@ public class JobEngine implements IJobEngine {
 
        @Override
        public ScheduledJob getScheduledJob(String template) {
-               Map<String, ScheduledJob> schedules = jobEngineConfiguration.getSchedules();
-               ScheduledJob scheduledJob = schedules.get(template);
-               if (scheduledJob == null)
-                       throw new NullPointerException("Missing template: " + template);
-               return scheduledJob;
+               Map<String, BasicDBObject> schedules = jobEngineConfiguration.getSchedules();
+               BasicDBObject schedule = schedules.get(template);
+               if (schedule == null)
+                       return null;
+               return jobEngineConfiguration.createScheduledJob(schedule, this);
        }
 
        @Override
index dfafb8ea9d32f24c455b16052c56fe650a3f306e..f04e9f8d99e538fe420d91f6c6b43fa3469a945d 100644 (file)
@@ -47,9 +47,8 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
        private static IConfiguration systemConfig;\r
        private final Map<String, IJobStepExecutor> executors = new LinkedHashMap<String, IJobStepExecutor>();\r
        private final Map<String, IProgram> programs = new LinkedHashMap<String, IProgram>();\r
-       private final Map<String, ScheduledJob> schedules = new LinkedHashMap<String, ScheduledJob>();\r
        private final List<JobTemplate> templates = Collections.synchronizedList(new ArrayList<JobTemplate>());\r
-       private final List<BasicDBObject> scheduleDescriptors = Collections.synchronizedList(new ArrayList<BasicDBObject>());\r
+       private final Map<String, BasicDBObject> schedules = new LinkedHashMap<String, BasicDBObject>();\r
 \r
        private URLClassLoader stepsClassLoader = null;\r
 \r
@@ -93,7 +92,7 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
        }\r
 \r
        @Override\r
-       public ScheduledJob createScheduledJob(BasicDBObject jobJSON) {\r
+       public ScheduledJob createScheduledJob(BasicDBObject jobJSON, IJobEngine jobEngine) {\r
                ScheduledJob sj = new ScheduledJob();\r
                String name = jobJSON.getString("name");\r
                String template = jobJSON.getString("template");\r
@@ -152,12 +151,7 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
        }\r
 \r
        @Override\r
-       public List<BasicDBObject> getScheduleDescriptors() {\r
-               return scheduleDescriptors;\r
-       }\r
-\r
-       @Override\r
-       public Map<String, ScheduledJob> getSchedules() {\r
+       public Map<String, BasicDBObject> getSchedules() {\r
                return schedules;\r
        }\r
 \r
@@ -217,27 +211,16 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
 \r
        @Override\r
        public void loadSchedules() throws Exception {\r
-               getSchedules().clear();\r
-               getScheduleDescriptors().clear();\r
+               schedules.clear();\r
                String configFilePath = systemConfig.getConfig(JobEngineConfiguration.CONF_SCHEDULES);\r
                logger.info("Loading scheduler configuration file {}", configFilePath);\r
                String jsonConfig = new String(Files.readAllBytes(Paths.get(configFilePath)));\r
                BasicDBObject dbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonConfig);\r
-               BasicDBList scheduleJobs = (BasicDBList) dbo.get("joblist");\r
-               for (int c = 0; c < scheduleJobs.size(); c++) {\r
-                       BasicDBObject sjob = (BasicDBObject) scheduleJobs.get(c);\r
-                       ScheduledJob sj = null;\r
-                       try {\r
-                               sj = createScheduledJob(sjob);\r
-                               getScheduleDescriptors().add(sjob);\r
-                       } catch (Exception e) {\r
-                               logger.error("Error creating job: {}", sjob);\r
-                       }\r
-                       //skip inactive jobs\r
-                       if (sj.isActive())\r
-                               getSchedules().put(sj.getTemplateName(), sj);\r
-\r
-               }\r
+               BasicDBList scheduleJobs = NoSQLUtils.asDBList(dbo, "joblist");\r
+               scheduleJobs.forEach(o -> {\r
+                       BasicDBObject j = (BasicDBObject) o;\r
+                       schedules.put(j.getString("template"), j);\r
+               });\r
        }\r
 \r
        private void loadTemplate(Path config) {\r
index ff6d572539ac06149d29456cac5f294d2658f648..7b80420ec131c4b85f57d145d16638e6076df988 100644 (file)
@@ -26,6 +26,8 @@ import org.quartz.UnableToInterruptJobException;
 import org.quartz.impl.StdSchedulerFactory;\r
 import org.quartz.impl.matchers.KeyMatcher;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobEngineConfiguration;\r
 \r
@@ -167,6 +169,21 @@ public class SchedulerService {
                }\r
        }\r
 \r
+       private void scheduleJobs() {\r
+               IJobEngineConfiguration jobEngineConfiguration = jobEngine.getJobEngineConfiguration();\r
+               Map<String, BasicDBObject> schedules = jobEngineConfiguration.getSchedules();\r
+               for (BasicDBObject job : schedules.values()) {\r
+                       ScheduledJob scheduledJob = null;\r
+                       try {\r
+                               scheduledJob = jobEngineConfiguration.createScheduledJob(job, jobEngine);\r
+                               if (scheduledJob.isActive())\r
+                                       schedule(scheduledJob);\r
+                       } catch (Exception e) {\r
+                               logger.error("Error creating job: {}", job.getString("template"));\r
+                       }\r
+               }\r
+       }\r
+\r
        public void shutdown() {\r
                List<JobExecutionContext> jobs;\r
                try {\r
@@ -182,10 +199,7 @@ public class SchedulerService {
        public void startup() throws Exception {\r
                scheduler = StdSchedulerFactory.getDefaultScheduler();\r
                scheduler.start();\r
-               IJobEngineConfiguration jobEngineConfiguration = jobEngine.getJobEngineConfiguration();\r
-               Map<String, ScheduledJob> schedules = jobEngineConfiguration.getSchedules();\r
-               for (ScheduledJob job : schedules.values())\r
-                       schedule(job);\r
+               scheduleJobs();\r
        }\r
 \r
        public void unregisterJob(ScheduledJob job) throws SchedulerException {\r
index 0ff6112d406859496cc290811a3c581ff21b746f..aaff0397281181659882369e47b3321ce87a1242 100644 (file)
@@ -80,7 +80,8 @@ public class AlternateRetrieveBatchSelectorModel extends BaseModel {
                        parameters.put(TARGETSTORENAME, stores.getSelection().iterator().next().getName());\r
                        parameters.put(RECIPIENT, email);\r
                        parameters.put(BASKET, new ArrayList<ArchivedMedia>(getBasketItems()));\r
-                       jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
+\r
+                       scheduledJob.doManualJob();\r
 \r
                        menuModel.clearBasket();\r
                        wndRetrieveBatch.detach();\r
index 205fb415dddcd76ff217e373731deee0ac5c3196..e9a7567c74f92117807ddd6cf14fdce46f11b477 100644 (file)
@@ -52,9 +52,8 @@ public class JobSelectorModel extends BaseModel {
        public void execute() {\r
                if (selectedJob == null)\r
                        return;\r
-\r
-               ScheduledJob scheduledJob = jobEngine.getScheduledJob(selectedJob.getString("template"));\r
-               scheduledJob.setJobEngine(jobEngine);\r
+               String template = selectedJob.getString("template");\r
+               ScheduledJob scheduledJob = jobEngine.getScheduledJob(template);\r
                try {\r
                        scheduledJob.doManualJob();\r
                } catch (Exception e) {\r
@@ -78,7 +77,7 @@ public class JobSelectorModel extends BaseModel {
        @Init\r
        public void init() {\r
                this.jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine");\r
-               jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getScheduleDescriptors());\r
+               jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getSchedules().values());\r
        }\r
 \r
        @Command\r
@@ -87,7 +86,7 @@ public class JobSelectorModel extends BaseModel {
                SchedulerService scheduler = jobEngine.getScheduler();\r
                try {\r
                        scheduler.restart();\r
-                       jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getScheduleDescriptors());\r
+                       jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getSchedules().values());\r
                } catch (Exception e) {\r
                        logger.info("Scheduler reload error. System message: {}", e.getMessage());\r
                }\r