From: vasary.daniel Date: Mon, 8 Feb 2021 19:29:49 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=d47cfba1c54974d7be086921642c8ac388fc7489;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32140 --- diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java index cd38fc11..0dde1db9 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java @@ -13,15 +13,13 @@ public interface IJobEngineConfiguration { IJobStep createJobStep(String stepUnitName) throws Exception; - ScheduledJob createScheduledJob(BasicDBObject jobJSON); + ScheduledJob createScheduledJob(BasicDBObject jobJSON, IJobEngine jobEngine); Map getExecutors(); Map getPrograms(); - List getScheduleDescriptors(); - - Map getSchedules(); + Map getSchedules(); List getTemplates(); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java index 500b7447..4d441e8b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java @@ -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 schedules = jobEngineConfiguration.getSchedules(); - ScheduledJob scheduledJob = schedules.get(template); - if (scheduledJob == null) - throw new NullPointerException("Missing template: " + template); - return scheduledJob; + Map schedules = jobEngineConfiguration.getSchedules(); + BasicDBObject schedule = schedules.get(template); + if (schedule == null) + return null; + return jobEngineConfiguration.createScheduledJob(schedule, this); } @Override diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java index dfafb8ea..f04e9f8d 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java @@ -47,9 +47,8 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { private static IConfiguration systemConfig; private final Map executors = new LinkedHashMap(); private final Map programs = new LinkedHashMap(); - private final Map schedules = new LinkedHashMap(); private final List templates = Collections.synchronizedList(new ArrayList()); - private final List scheduleDescriptors = Collections.synchronizedList(new ArrayList()); + private final Map schedules = new LinkedHashMap(); private URLClassLoader stepsClassLoader = null; @@ -93,7 +92,7 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { } @Override - public ScheduledJob createScheduledJob(BasicDBObject jobJSON) { + public ScheduledJob createScheduledJob(BasicDBObject jobJSON, IJobEngine jobEngine) { ScheduledJob sj = new ScheduledJob(); String name = jobJSON.getString("name"); String template = jobJSON.getString("template"); @@ -152,12 +151,7 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { } @Override - public List getScheduleDescriptors() { - return scheduleDescriptors; - } - - @Override - public Map getSchedules() { + public Map getSchedules() { return schedules; } @@ -217,27 +211,16 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { @Override public void loadSchedules() throws Exception { - getSchedules().clear(); - getScheduleDescriptors().clear(); + schedules.clear(); String configFilePath = systemConfig.getConfig(JobEngineConfiguration.CONF_SCHEDULES); logger.info("Loading scheduler configuration file {}", configFilePath); String jsonConfig = new String(Files.readAllBytes(Paths.get(configFilePath))); BasicDBObject dbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonConfig); - BasicDBList scheduleJobs = (BasicDBList) dbo.get("joblist"); - for (int c = 0; c < scheduleJobs.size(); c++) { - BasicDBObject sjob = (BasicDBObject) scheduleJobs.get(c); - ScheduledJob sj = null; - try { - sj = createScheduledJob(sjob); - getScheduleDescriptors().add(sjob); - } catch (Exception e) { - logger.error("Error creating job: {}", sjob); - } - //skip inactive jobs - if (sj.isActive()) - getSchedules().put(sj.getTemplateName(), sj); - - } + BasicDBList scheduleJobs = NoSQLUtils.asDBList(dbo, "joblist"); + scheduleJobs.forEach(o -> { + BasicDBObject j = (BasicDBObject) o; + schedules.put(j.getString("template"), j); + }); } private void loadTemplate(Path config) { diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java index ff6d5725..7b80420e 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java @@ -26,6 +26,8 @@ import org.quartz.UnableToInterruptJobException; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.matchers.KeyMatcher; +import com.ibm.nosql.json.api.BasicDBObject; + import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobEngineConfiguration; @@ -167,6 +169,21 @@ public class SchedulerService { } } + private void scheduleJobs() { + IJobEngineConfiguration jobEngineConfiguration = jobEngine.getJobEngineConfiguration(); + Map schedules = jobEngineConfiguration.getSchedules(); + for (BasicDBObject job : schedules.values()) { + ScheduledJob scheduledJob = null; + try { + scheduledJob = jobEngineConfiguration.createScheduledJob(job, jobEngine); + if (scheduledJob.isActive()) + schedule(scheduledJob); + } catch (Exception e) { + logger.error("Error creating job: {}", job.getString("template")); + } + } + } + public void shutdown() { List jobs; try { @@ -182,10 +199,7 @@ public class SchedulerService { public void startup() throws Exception { scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start(); - IJobEngineConfiguration jobEngineConfiguration = jobEngine.getJobEngineConfiguration(); - Map schedules = jobEngineConfiguration.getSchedules(); - for (ScheduledJob job : schedules.values()) - schedule(job); + scheduleJobs(); } public void unregisterJob(ScheduledJob job) throws SchedulerException { diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/model/AlternateRetrieveBatchSelectorModel.java b/server/user.mediacube.gui/src/user/jobengine/zk/model/AlternateRetrieveBatchSelectorModel.java index 0ff6112d..aaff0397 100644 --- a/server/user.mediacube.gui/src/user/jobengine/zk/model/AlternateRetrieveBatchSelectorModel.java +++ b/server/user.mediacube.gui/src/user/jobengine/zk/model/AlternateRetrieveBatchSelectorModel.java @@ -80,7 +80,8 @@ public class AlternateRetrieveBatchSelectorModel extends BaseModel { parameters.put(TARGETSTORENAME, stores.getSelection().iterator().next().getName()); parameters.put(RECIPIENT, email); parameters.put(BASKET, new ArrayList(getBasketItems())); - jobEngine.submit(JOBTEMPLATE, RESTORE, parameters); + + scheduledJob.doManualJob(); menuModel.clearBasket(); wndRetrieveBatch.detach(); diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/model/JobSelectorModel.java b/server/user.mediacube.gui/src/user/jobengine/zk/model/JobSelectorModel.java index 205fb415..e9a7567c 100644 --- a/server/user.mediacube.gui/src/user/jobengine/zk/model/JobSelectorModel.java +++ b/server/user.mediacube.gui/src/user/jobengine/zk/model/JobSelectorModel.java @@ -52,9 +52,8 @@ public class JobSelectorModel extends BaseModel { public void execute() { if (selectedJob == null) return; - - ScheduledJob scheduledJob = jobEngine.getScheduledJob(selectedJob.getString("template")); - scheduledJob.setJobEngine(jobEngine); + String template = selectedJob.getString("template"); + ScheduledJob scheduledJob = jobEngine.getScheduledJob(template); try { scheduledJob.doManualJob(); } catch (Exception e) { @@ -78,7 +77,7 @@ public class JobSelectorModel extends BaseModel { @Init public void init() { this.jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine"); - jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getScheduleDescriptors()); + jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getSchedules().values()); } @Command @@ -87,7 +86,7 @@ public class JobSelectorModel extends BaseModel { SchedulerService scheduler = jobEngine.getScheduler(); try { scheduler.restart(); - jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getScheduleDescriptors()); + jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getSchedules().values()); } catch (Exception e) { logger.info("Scheduler reload error. System message: {}", e.getMessage()); }