From c5bb5259f6c347cc106674685f14d0e9dc4ce52a Mon Sep 17 00:00:00 2001 From: Sweidan Omar Date: Mon, 13 Dec 2021 14:31:56 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32575 --- .../src/user/jobengine/server/IJobEngine.java | 14 +++++++------ .../server/IJobEngineConfiguration.java | 4 +++- .../src/user/jobengine/server/JobEngine.java | 20 +++++++++++++++--- .../server/JobEngineConfiguration.java | 21 +++---------------- .../server/scheduler/SchedulerService.java | 11 ++++++---- .../jobengine/zk/model/JobSelectorModel.java | 9 +++++--- 6 files changed, 44 insertions(+), 35 deletions(-) diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java index 0e171f2a..862bf0a5 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java @@ -62,7 +62,7 @@ public interface IJobEngine { JobEngineRemote getRemoteEngine(); - ScheduledJob getScheduledJob(String template); + ScheduledJob getScheduledJob(String template) throws Exception; SchedulerService getScheduler(); @@ -130,17 +130,19 @@ public interface IJobEngine { void storeJob(IJobRuntime runtime); - IJobRuntime submit(IJobRuntime parent, IJobStatusChangedListener statusListener, String template, String name, int priority, String owner, + IJobRuntime submit(IJobRuntime parent, IJobStatusChangedListener statusListener, String template, String name, + int priority, String owner, Map parameters) throws JobEngineException; + + IJobRuntime submit(IJobRuntime parent, IJobStatusChangedListener statusListener, String template, String name, Map parameters) throws JobEngineException; - IJobRuntime submit(IJobRuntime parent, IJobStatusChangedListener statusListener, String template, String name, Map parameters) + IJobRuntime submit(IJobRuntime parent, String template, String name, int priority, Map parameters) throws JobEngineException; - IJobRuntime submit(IJobRuntime parent, String template, String name, int priority, Map parameters) throws JobEngineException; - IJobRuntime submit(String template, String name, Map parameters) throws JobEngineException; - IJobRuntime submit(String template, String name, Map parameters, String owner) throws JobEngineException; + IJobRuntime submit(String template, String name, Map parameters, String owner) + throws JobEngineException; void suspendExecutingJob(Throwable t, IJobRuntime jobRuntime); 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 9c18761e..33289687 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 @@ -1,7 +1,9 @@ package user.jobengine.server; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import com.ibm.nosql.json.api.BasicDBObject; @@ -19,7 +21,7 @@ public interface IJobEngineConfiguration { Map getPrograms(); - Map getSchedules(); + ArrayList> 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 bfd48479..fa53beed 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 @@ -7,6 +7,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentHashMap; @@ -531,9 +532,22 @@ public class JobEngine implements IJobEngine { } @Override - public ScheduledJob getScheduledJob(String template) { - Map schedules = jobEngineConfiguration.getSchedules(); - BasicDBObject schedule = schedules.get(template); + public ScheduledJob getScheduledJob(String template) throws Exception { + ArrayList> schedules = jobEngineConfiguration.getSchedules(); + BasicDBObject schedule = null; + boolean templateFirstOccurence = false; + + for (int index = 0; index < schedules.size(); index++) { + if (schedules.get(index).getKey().equals(template)) { + if (!templateFirstOccurence) { + templateFirstOccurence = true; + schedule = schedules.get(index).getValue(); + } else { + throw new Exception("Key " + template + " is already contained in scheduled jobs!"); + } + } + } + if (schedule == null) return null; return jobEngineConfiguration.createScheduledJob(schedule, this); 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 a7bd34ab..c2f5164f 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 @@ -57,7 +57,7 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { private final Map executors = new LinkedHashMap(); private final Map programs = new LinkedHashMap(); private final List templates = Collections.synchronizedList(new ArrayList()); - private final Map schedules = new LinkedHashMap(); + private final ArrayList> schedules = new ArrayList>(); private URLClassLoader stepsClassLoader; private boolean resetStepClassLoader; private GroovyClassLoader groovyClassLoader; @@ -227,7 +227,7 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { } @Override - public Map getSchedules() { + public ArrayList> getSchedules() { return schedules; } @@ -326,34 +326,19 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { String jsonConfig = new String(Files.readAllBytes(Paths.get(configFilePath))); BasicDBObject dbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonConfig); BasicDBList scheduleJobs = NoSQLUtils.asDBList(dbo, "joblist"); - ArrayList> schedulesArraylist = new ArrayList>(); scheduleJobs.forEach(o -> { try { - boolean keyAlreadyContained = false; BasicDBObject j = (BasicDBObject) o; String template = j.getString("template"); String xml = loadTemplateXml(template); j.put("xml", xml); - for (int index = 0; index < schedulesArraylist.size(); index++) { - if (schedulesArraylist.get(index).getKey().equals(template)) { - keyAlreadyContained = true; - throw new Exception("Key " + template + " is already contained in scheduled jobs!"); - } - } - - if (!keyAlreadyContained) { - schedulesArraylist.add(new SimpleEntry(template, j)); - } + schedules.add(new SimpleEntry(template, j)); } catch (Exception e) { logger.error("Scheduled job error! {}", e.getMessage()); } }); - - for (Entry entry : schedulesArraylist) { - schedules.put(entry.getKey(), entry.getValue()); - } } private Set getJavaFileList(Path path, String excludeFileName) { 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 183be469..2d8ebc72 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 @@ -1,8 +1,9 @@ package user.jobengine.server.scheduler; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; +import java.util.Map.Entry; import java.util.UUID; import org.apache.commons.lang.StringUtils; @@ -76,7 +77,8 @@ public class SchedulerService { } @Override - public void jobWasExecuted(JobExecutionContext paramJobExecutionContext, JobExecutionException paramJobExecutionException) { + public void jobWasExecuted(JobExecutionContext paramJobExecutionContext, + JobExecutionException paramJobExecutionException) { listenerManager.removeJobListener(listenerName); } }; @@ -173,8 +175,9 @@ public class SchedulerService { private void scheduleJobs() { IJobEngineConfiguration jobEngineConfiguration = jobEngine.getJobEngineConfiguration(); - Map schedules = jobEngineConfiguration.getSchedules(); - for (BasicDBObject job : schedules.values()) { + ArrayList> schedules = jobEngineConfiguration.getSchedules(); + for (int index = 0; index < schedules.size(); index++) { + BasicDBObject job = schedules.get(index).getValue(); ScheduledJob scheduledJob = null; try { scheduledJob = jobEngineConfiguration.createScheduledJob(job, jobEngine); 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 8318cfaa..931ec81f 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 @@ -54,7 +54,7 @@ public class JobSelectorModel extends BaseModel { } @Command - public void execute() { + public void execute() throws Exception { if (selectedJob == null) return; String template = selectedJob.getString("template"); @@ -92,8 +92,11 @@ public class JobSelectorModel extends BaseModel { } private void initJobList() { - List jobsCollection = new ArrayList<>( - jobEngine.getJobEngineConfiguration().getSchedules().values()); + List jobsCollection = new ArrayList(); + for (int index = 0; index < jobEngine.getJobEngineConfiguration().getSchedules().size(); index++) { + jobsCollection.add(jobEngine.getJobEngineConfiguration().getSchedules().get(index).getValue()); + } + Collections.sort(jobsCollection, (a, b) -> { String aName = a.getString("name"); if (aName == null) -- 2.54.0